【问题标题】:How to use sed to remove all lines until first match in first column?如何使用 sed 删除所有行,直到第一列中的第一个匹配?
【发布时间】:2017-04-13 18:33:36
【问题描述】:

如何使用 sed 删除所有行,直到第一列中的第一个匹配?结果应保留最后三行。

文件

1fff
2ddd
3zzz

 TestXXX
 TestXXX
Test        XXX
Mike
Charly

sed -i '/Test/' 文件

【问题讨论】:

  • 您也可以显示预期的输出吗?听起来你什么都没试过。空格是否标记新列?

标签: linux sed


【解决方案1】:
sed -n '/^Test/,$p' oldfile > newfile

【讨论】:

  • 比我快 :-) +1
  • 好吧,我急于弄清楚并使用它:)
【解决方案2】:

我会在 perl 中使用 .. 运算符
当满足第一个条件时它会打开
并在遇到第二个时关闭。

(我添加了 ^ 因为你说你想要行首)

perl -nle 'print if /^Test/..0' file

后期编辑:在二读时,..0 不清楚。它是行号,因为在“测试”之后不会到达第 0 行,所以它永远不会发生。

【讨论】:

    【解决方案3】:
    sed -n '/^Test/,$ p' YourFile
    

    仅在您的测试之后打印,直到结束

    【讨论】:

      【解决方案4】:

      这可能对你有用(GNU sed):

      sed -i '/^Test/,$!d' file
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2015-05-07
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多