如何打印文件的内容减去包括第一次出现的模式上方的行在内的所有内容?
假设第 15 行的模式是“^Previous”;然后我想打印第1--13行。
答案1
sed
可以自己完成这一切:
sed -n '$!N;/.*PATTERN.*/q;P;D' infile
很简单:打开静默模式,使用滑动窗口(通过N
和D
,使模式空间中始终有两行),如果遇到则q
uit打印模式空间中的第一行并重新开始循环。PATTERN
P
它gnu sed
甚至更短,因为它可以Q
不自动打印,因此您可以跳过静音模式:
sed '$!N;/.*PATTERN.*/Q;P;D' infile
答案2
亲吻怎么样
sed '1,/^Previous/!d' file | head -n -2