【问题标题】:replace/remove awk/sed/vim column elements after a character在字符后替换/删除 awk/sed/vim 列元素
【发布时间】:2019-04-30 07:27:48
【问题描述】:

我有一个包含单列条目的文本文件,

1745:1745
1746:1746
1747:1747
1748:1748
42:42
43:43
44:44
45:45
46:46

我想删除重复的数字,即删除所有以(包括)冒号开头的字符,输出格式,

1745
1746
1747
1748
42
43
44
45
46

我该怎么做?

谢谢

【问题讨论】:

  • man cut: -d use DELIM instead of TAB for field delimiter-f select only these fields

标签: text vim awk sed replace


【解决方案1】:

添加以下命令,该命令将仅检查和打印在两列中有重复条目的值:

awk -F":" '{if ($1 == $2) print $1 }' input_file

【讨论】:

    【解决方案2】:

    请您尝试以下,这些基于从冒号到以 null 结尾的替换。

    解决方案一:使用awk

    awk '{sub(/:.*/,"")} 1'  Input_file
    

    解决方案二:使用sed

    sed 's/:.*//g'  Input_file
    

    【讨论】:

      【解决方案3】:

      对于awk 下方的给定输入应该可以工作

      awk -F':' '{ print $1 }' infile
      

      【讨论】:

      • 甚至$0 = $1
      【解决方案4】:

      使用 vim,查找/替换就可以了

      %s/:.*
      

      【讨论】:

        【解决方案5】:
        cut -d ':' -f 1 < file.txt
        

        这似乎行得通,嗯?

        【讨论】:

        • 是的,你不需要&lt;。如果您没有像1:2:3 这样的行,它可以工作。
        猜你喜欢
        • 2017-09-06
        • 2019-07-20
        • 2016-10-29
        • 2017-02-08
        • 1970-01-01
        • 2012-07-25
        • 2016-09-05
        • 2015-01-13
        • 2019-12-01
        相关资源
        最近更新 更多