如何在匹配/匹配后使用“sed”删除2行?

时间:2011-11-30 08:56:41

标签: linux shell sed

我有以下命令:sed -i -e '/match1/,+2d' filex,它在文件“file x”中找到匹配“match1”后删除2行。我想为它添加几个匹配项,比如match1,match 2 ....

所以在找到任何匹配后会删除2行,我该如何实现呢?

3 个答案:

答案 0 :(得分:27)

两种方式,取决于sed版本和平台:

sed -e '/match1/,+2d' -e '/match2/,+2d' < oldfile > newfile

sed -e '/match1\|match2/,+2d' < oldfile > newfile

答案 1 :(得分:8)

不是sed用户,但在我看来你可以使用:

sed -i -e '/(match1|match2)/,+2d' filex

否则你可以,如果有可能,你可以这样做:

sed -i -e '/match1/,+2d' filex && sed -i -e '/match2/,+2d' filex

编辑:看起来我有正确的想法,但是你知道了。

答案 2 :(得分:4)

如果我理解正确,你想要

sed -e '/match1/,+2d' input.txt

例如,使用seq 10 | sed '3i match1' > input.txt创建输入:

1
2
match1
3
4
5
6
7
8
9
10

sed -e '/match1/,+2d' input.txt的输出为:

1
2
5
6
7
8
9
10