Two further comments:


Grep gives no meaning to the -A/-B/-C flags when they are used together with the -o flag (and prints a warning when they are used together).


Both the manual and the man page indicate that "a warning is given" when these options are used together, but what actually happens is that a group separator is printed at apparently random places.


I suggest to give them a specific meaning when the -o flag is used, namely to print NUM _characters_ of trailing/leading/output context around the match.

Currently this behavior can be obtained with "grep -oE '.{0,A}expose_frame.{0,B}'", where A and B are the number of leading and trailing context characters, but it is not efficient, and can become very inefficient for "large" values of A and B (say, 40).


Of course I meant "grep -oE '.{0,A}PATTERN.{0,B}'.

The "very inefficient" case happens in particular for very long lines:

for i in $(seq 1 10)
do
  printf %100000s | tr ' ' 'a'
  printf foobar
  printf %100000s | tr ' ' 'a'
done | grep -oE '.{0,40}foobar.{0,40}'



Reply via email to