我有一个看起来像这样的文件:
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 做到这一点?
使用sedGNU
版本的扩展:
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