On 9 November 2015 14:50:46 CET, Stephane Chazelas <stephane.chazelas@gmail.com> wrote:
2015-11-08 21:49:03 +0100, Valerio Bozzolan:
Sorry... typo...
echo abcde | grep -o -E 'b([a-z])d'
=> "bcd"
Can't I choose to have only "c"?
[...]
That's correct, GNU grep doesn't have that capability (yet).
Recent versions of pcregrep do:
$ echo abc | pcregrep -o1 '.(.).'
b
Now, I'm not a GNU grep maintainer but I suppose the question is
how far do we want to take grep away from its original purpose
(print the lines that match a pattern which is what g/re/p
stands for).
GNU grep is already doing find's job with -r, part of sed's job
with -o/--colour.
Having said that, I do agree it's the logical continuation after
-o.
Note that for now, you can already do:
$ echo!
abcde |
grep -o -P 'b\K[a-z](?=d)'
c