假设我有一个包含以下内容的文本文件:
foo
bar
whatever
something I don't know
bar2
whatever
grep whatever myfile.txt
并且,作为执行(和/或sed
和/或)的输出awk
,我希望得到:
foo
something I don't know
我尝试使用选项-B 2
,但会同时输出foo
和bar
。
无法做到... | 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