我有一个看起来像这样的文件:
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