How to find patterns across multiple lines using grep?

后端 未结 26 1730
你的背包
你的背包 2020-11-22 04:14

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         


        
26条回答
  •  旧时难觅i
    2020-11-22 04:18

    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.

提交回复
热议问题