使用sed删除匹配的正则表达式及其下面的行(或两行)

时间:2010-01-13 23:35:02

标签: sed line

好的,我发现了这个问题:

How do I delete a matching line, the line above and the one below it, using sed?

并且花了最后一小时尝试编写与字符串匹配的内容并删除包含字符串的行及其下方的行(或变体 - 删除其下面的2行)。

我觉得我现在正在输入随机字符串。请有人帮助我。

2 个答案:

答案 0 :(得分:4)

如果我理解正确,删除匹配行和

之后的一行
/matchstr/{N;d;}

匹配行和

之后的两行
/matchstr/{N;N;d;}
  • N带来下一行
  • d - 删除生成的单行

答案 1 :(得分:0)

你可以使用awk。例如,搜索单词“two”并在其后跳过2行

$ cat file
one
two
three
four
five
six
seven
eight
$ awk -vnum=2 '/two/{for(i=0;i<=num;i++)getline}1' file
one
five
six
seven
eight