【问题标题】:How can I use "sed" to delete 2 lines after match/matches?如何在匹配/匹配后使用“sed”删除 2 行?
【发布时间】:2012-01-09 12:46:12
【问题描述】:

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

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

【问题讨论】:

标签: linux shell sed


【解决方案1】:

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

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

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

【讨论】:

    【解决方案2】:

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

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

    如果可以的话,你可以这样做:

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

    编辑:看起来我的想法是对的,但 ziu 明白了。

    【讨论】:

      【解决方案3】:

      如果我理解正确,你想要

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

      例如,使用seq 10 | sed '3i match1' &gt; 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
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2013-03-04
        • 1970-01-01
        • 2017-06-13
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多