6
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
4

3 回答 3

12

只要找到模式就设置一个标志。从那一刻起,打印以下行:

$ 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,因此将打印以下行。

这是如何在两个模式之间选择线条的具体案例?当没有这样的第二种模式时。

于 2013-09-27T09:30:57.820 回答
8
sed '1,/pattern/d' file

适用于您的示例。

sed '0,/pattern/d' file

更可靠。

于 2013-09-27T09:32:58.987 回答
2

另一种sed解决方案:

sed ':loop;/pattern/{d};N;b loop' file.txt
于 2013-09-27T09:35:48.403 回答