Grep:仅显示上面的第二行

Grep:仅显示上面的第二行

假设我有一个包含以下内容的文本文件:

foo
bar
whatever

something I don't know
bar2
whatever

grep whatever myfile.txt并且,作为执行(和/或sed和/或)的输出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

相关内容