On Thu, Apr 20, 2017 at 02:34:47PM -0500, Eric Blake wrote:
On 04/20/2017 11:51 AM, Assaf Gordon wrote:If I may suggest the following sed program: $ sed -n ':x 1,2{N;bx} ; /UGLY/{ N;N;z;bx }; /./P;N;D' fileWorks as long as lines 1 and 2 do not contain UGLY. But misbehaves if UGLY appears early:
[...]
Also misbehaves if two occurrences of UGLY appear with overlapping context:
[...]
May be fixable with even more magic, perhaps by using the hold buffer to track the status of the last three lines, and suppressing output if any of the last three inputs were UGLY. But more complicated than I want to spend time on for the sake of this email.
Good catch, thanks for pointing this out. Indeed, that was an ad-hoc script, suitible for some limited scenarios but not robust as a general solution. -assaf
