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