I want to find files that have \"abc\" AND \"efg\" in that order, and those two strings are on different lines in that file. Eg: a file with content:
blah bl
This can be done easily by first using tr
to replace the newlines with some other character:
tr '\n' '\a' | grep -o 'abc.*def' | tr '\a' '\n'
Here, I am using the alarm character, \a
(ASCII 7) in place of a newline.
This is almost never found in your text, and grep
can match it with a .
, or match it specifically with \a
.