Linux 如何使用sed删除与模式匹配的行及其后面的行?

Linux 如何使用sed删除与模式匹配的行及其后面的行?,linux,unix,sed,Linux,Unix,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”行之后的一行 “标志”行的出现很不规则,我不能依赖任何一种行号策略 有人知道如何使用sed吗?使用GNU的扩展版本: 它产生: good text good text

我有一个类似以下内容的文件:

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”行之后的一行

“标志”行的出现很不规则,我不能依赖任何一种行号策略


有人知道如何使用sed吗?

使用GNU的扩展版本:

它产生:

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/{f=1;next}f{f=0;next}1' file
awk '/FLAG/{getline;next}1' file