Grep:只顯示上面的第二行

Grep:只顯示上面的第二行

假設我有一個包含內容的文字檔案:

foo
bar
whatever

something I don't know
bar2
whatever

grep whatever myfile.txt並且,作為(and/orsed和/or )的輸出awk,我希望:

foo
something I don't know

我嘗試過使用選項-B 2,但同時輸出foobar
無法... | grep -v bar這樣做,因為有很多不同的記錄。

答案1

不是 grep,但應該可以:

awk '/grep_string/ {print a} {a=b;b=$0}' 文件

答案2

所以這是我的解決方案,因為我找不到任何方法:

當我返回大量內容時,請說:

foo
bar
whatever
--
foo2
bar2
whatever
--

等等,我使用 grep 的分隔符號並得到下一行,如下所示,然後刪除它們:

grep -B2 whatever myfile.txt | grep -v whatever | grep -A 1 -E '\-\-' | grep -v  -E '\-\-'

這只是輸出:

foo
foo2

相關內容