【问题标题】:Manipulating a text file with grep使用 grep 操作文本文件
【发布时间】:2016-10-12 03:57:00
【问题描述】:

好的,所以我有一个像这样格式化的文本文件,它有几行向下。

EXAMPLE1:EXAMPLE2:EXAMPLE3
EXAMPLE1:EXAMPLE2:EXAMPLE3
EXAMPLE1:EXAMPLE2:EXAMPLE3

我想用 grep 把它改成这样

EXAMPLE2:EXAMPLE3

基本上我想在:之前取出第一部分:

如果有人能告诉我如何做到这一点,将不胜感激。

【问题讨论】:

  • How to grep and replace的可能重复
  • 您是要取出所有第一个字段还是仅在行首包含EXAMPLE1 时取出。在这种情况下,您可以使用 sed 's/^EXAMPLE1://' textfile 之类的东西。

标签: linux grep


【解决方案1】:

您可以使用cut 实用程序过滤掉给定分隔符的列。

在此示例中,分隔符为 :,并且您希望每一列都从第二个开始:

$ cut -d: -f2- < input.txt

【讨论】:

    【解决方案2】:

    您可以使用-o 标志选择与grep 中的正则表达式匹配的输入部分。

    示例

    $ grep -o "[^:]*:[^:]*$" input
    EXAMPLE2:EXAMPLE3
    EXAMPLE2:EXAMPLE3
    EXAMPLE2:EXAMPLE3
    

    【讨论】:

      【解决方案3】:

      另一种方法。希望这会有所帮助。

      awk -F":" '{printf "%s:%s\n" ,$1,$2}' file.txt
      

      输出

      EXAMPLE1:EXAMPLE2
      EXAMPLE1:EXAMPLE2
      EXAMPLE1:EXAMPLE2
      

      【讨论】:

        【解决方案4】:

        这里是:

        cut -d':' -f2,3 filename
        

        输出:

        EXAMPLE2:EXAMPLE3
        EXAMPLE2:EXAMPLE3
        EXAMPLE2:EXAMPLE3
        

        【讨论】:

        • 这与 Bo Borgerson 4 小时前给出的答案有何不同?
        猜你喜欢
        • 1970-01-01
        • 2021-02-13
        • 2012-04-06
        • 1970-01-01
        • 2017-12-13
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多