我有一个类似于:
的文件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”行后面的一行。
“FLAG”行不规则,我不能依赖任何类型的行号策略。
任何人都知道如何用sed做到这一点?
答案 0 :(得分:9)
使用sed的GNU
版本的扩展程序:
sed -e '/FLAG/,+1 d' infile
它产生:
good text
good text
good text
good text
good test
good text
答案 1 :(得分:9)
这有效,并且不依赖于任何扩展名:
sed '/FLAG/{N
d
}' infile
N
读取模式空间中的下一行,然后d
删除模式空间。
答案 2 :(得分:2)
以下是awk
的一种方式:
awk '/FLAG/{f=1;next}f{f=0;next}1' file
或
awk '/FLAG/{getline;next}1' file