![](/img/trans.png)
[英]sed, awk or similar - delete whole line and 2 lines above if pattern matches followed by a blank line
[英]How to delete the line that matches a pattern and the line after it with sed?
我有一个看起来像这样的文件:
good text
good text
FLAG bad text
bad text
good text
good text
good test
bad Text FLAG bad text
bad text
good text
我需要删除任何包含“ FLAG”的行, 而且我也总是需要立即删除“ FLAG”行之后的一行。
“ FLAG”行不规则地出现,以至于我不能依靠任何种类的行号策略。
有谁知道如何用sed做到这一点?
使用sed的GNU
版本的扩展:
sed -e '/FLAG/,+1 d' infile
它产生:
good text
good text
good text
good text
good test
good text
这有效,并且不依赖于任何扩展:
sed '/FLAG/{N
d
}' infile
N
将下一行读入模式空间,然后d
删除模式空间。
这是awk
一种方法:
awk '/FLAG/{f=1;next}f{f=0;next}1' file
要么
awk '/FLAG/{getline;next}1' file
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.