Subject: bug#47001: Feature request: give a meaning to -A/-B/-C with -o

From: Gregory Heytings <[email-masked]>
Date: Mon, 08 Mar 2021 17:12:38 +0000

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}'