Linux 我怎样才能使用;sed";要在匹配/匹配后删除2行吗?
我有以下命令:Linux 我怎样才能使用;sed";要在匹配/匹配后删除2行吗?,linux,shell,sed,Linux,Shell,Sed,我有以下命令:sed-I-e'/match1/,+2d'filex,它在文件“file x”中找到匹配的“match1”后删除2行。我想添加几个匹配项,比如匹配1、匹配2 因此,在找到任何匹配项后,它将删除2行,如何实现这一点?两种方法,具体取决于sed版本和平台: sed -e '/match1/,+2d' -e '/match2/,+2d' < oldfile > newfile sed-e'/match1/,+2d'-e'/match2/,+2d'newfile 或 sed
sed-I-e'/match1/,+2d'filex
,它在文件“file x”中找到匹配的“match1”后删除2行。我想添加几个匹配项,比如匹配1、匹配2
因此,在找到任何匹配项后,它将删除2行,如何实现这一点?两种方法,具体取决于sed版本和平台:
sed -e '/match1/,+2d' -e '/match2/,+2d' < oldfile > newfile
sed-e'/match1/,+2d'-e'/match2/,+2d'newfile
或
sed-e'/match1\| match2/,+2d'newfile
不是sed用户,但在我看来,您可以使用:
sed -i -e '/(match1|match2)/,+2d' filex
否则,如果您可以这样做,您可以:
sed -i -e '/match1/,+2d' filex && sed -i -e '/match2/,+2d' filex
编辑:看起来我的想法是对的,但是ziu明白了。如果我理解正确,你想
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
你能给出一个输入/输出的例子,让它更清楚你的期望吗?你的例子中明显的/match1/,+2d/匹配2/,+2d
?它不会识别重叠,但您的原始表达式也不会识别重叠。请参阅可能的重复项
1
2
5
6
7
8
9
10