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

bob*_*nto 7 unix linux 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
Run Code Online (Sandbox Code Playgroud)

我需要删除任何包含"FLAG"的行,我总是需要在"FLAG"行之后立即删除一行.

"FLAG"行不规则,我不能依赖任何类型的行号策略.

谁知道如何用sed做到这一点?

Bir*_*rei 9

使用GNU版本的扩展:

sed -e '/FLAG/,+1 d' infile
Run Code Online (Sandbox Code Playgroud)

它产生:

good text
good text
good text
good text
good test
good text
Run Code Online (Sandbox Code Playgroud)


Bar*_*mar 9

这有效,并且不依赖于任何扩展:

sed '/FLAG/{N
d
}' infile
Run Code Online (Sandbox Code Playgroud)

N将下一行读入模式空间,然后d删除模式空间.