aaa aaaa aaaa aaaa
sss ssss ssss ssss
ddd dddd dddd dddd
fff ffff ffff ffff
abc pattern asd fde
111 222 333 444 555
666 777 888 999 000
所需输出:如果
111 222 333 444 555
666 777 888 999 000
答案 0 :(得分:11)
只要找到模式,就设置一个标志。从那一刻开始,打印出以下几行:
$ awk 'p; /pattern/ {p=1}' file
111 222 333 444 555
666 777 888 999 000
或者
awk '/pattern/ {p=1;next}p' file
它在每一行中查找pattern
。找到它后,变量p
设置为1.棘手的一点是,p>0
时只打印线条,以便打印以下行。
当没有这样的第二种模式时,这是How to select lines between two patterns?的特定情况。
答案 1 :(得分:8)
sed '1,/pattern/d' file
适用于您的示例。
sed '0,/pattern/d' file
更可靠。
答案 2 :(得分:2)
另一个sed
解决方案:
sed ':loop;/pattern/{d};N;b loop' file.txt