在图案上方打印两行线

在图案上方打印两行线

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

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

答案1

sed可以自己完成这一切:

sed -n '$!N;/.*PATTERN.*/q;P;D' infile

很简单:打开静默模式,使用滑动窗口(通过ND,使模式空间中始终有两行),如果遇到则quit打印模式空间中的第一行并重新开始循环。PATTERNP

gnu sed甚至更短,因为它可以Q不自动打印,因此您可以跳过静音模式:

sed  '$!N;/.*PATTERN.*/Q;P;D' infile

答案2

亲吻怎么样

sed '1,/^Previous/!d' file | head -n -2

相关内容