Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/linux/27.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/shell/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Linux 我怎样才能使用;sed";要在匹配/匹配后删除2行吗?_Linux_Shell_Sed - Fatal编程技术网

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