8

我有一个看起来像这样的文件:

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 做到这一点?

4

3 回答 3

10

GNU版本的扩展:

sed -e '/FLAG/,+1 d' infile

它产生:

good text
good text
good text
good text
good test
good text
于 2013-07-26T21:22:47.033 回答
9

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

sed '/FLAG/{N
d
}' infile

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

于 2013-07-26T21:28:09.167 回答
2

这是一种方法awk

awk '/FLAG/{f=1;next}f{f=0;next}1' file

或者

awk '/FLAG/{getline;next}1' file
于 2013-07-26T22:38:51.130 回答