在图案上方两行打印线

Too*_*rot 2 text-processing

如何打印文件的内容减去所有内容,包括模式第一次出现上方的行和下方?

假设模式是第 15 行的“^Previous”;然后我想打印第 1--13 行。

don*_*sti 5

sed 可以自己完成这一切:

sed -n '$!N;/.*PATTERN.*/q;P;D' infile
Run Code Online (Sandbox Code Playgroud)

很简单:打开静默模式,使用滑动窗口(通过ND,这样模式空间中总是有两行),q如果遇到 uitPATTERN否则Print 模式空间中的第一行并重新开始循环。

有了gnu sed它甚至更短,因为它可以Q无自动打印,所以你可以跳过静音模式UIT:

sed  '$!N;/.*PATTERN.*/Q;P;D' infile
Run Code Online (Sandbox Code Playgroud)