Re: [PATCH v2 1/3] git-submodule: New subcommand 'summary' (1) - code framework
- From
Junio C Hamano <gitster@pobox.com>
- Date
- Mar 1, 2008, 20:52 UTC
- Message-ID
- <7vejauxj38.fsf@gitster.siamese.dyndns.org>
- In-Reply-To
- <46dff0320803010227r5024d152g259a6a07a2441351@mail.gmail.com>
"Ping Yin" <pkufranky@gmail.com> writes:
Show 13 quoted lines
>> > + grep '^:160000\|:[0-9]\+ 160000' |
>>
>> This looks troublesome.
>>
>> - [0-9] is obviously wrong and [0-7] is what you meant;
>> - \| and \+ are not BRE but GNU.
>>
> man grep says
> In basic regular expressions the metacharacters ?, +, {, |, (, and )
> lose their special meaning; instead use the backslashed versions \?,
> \+, \{, \|, \(, and \).
>
> Doen't it mean that '\|' is BRE ?It just says unlike in ERE, these characters are not special in BRE; it does not at all say using backslash like \?, \+, and \| makes them so.
And they are not. \(...\), \{m\}, \{m,\} and \{m,n\} are part of BRE, but the two you used (\+ and \|) are not. GNU accept these two as extensions, but other POSIX implementations may have troubles with them.
http://www.opengroup.org/onlinepubs/000095399/basedefs/xbd_chap09.html
Please be gentle to porters to non GNU systems. Either stay inside BRE (which I think we have managed to do with our usage of grep) or explicitly ask for ERE with "grep -E".