【问题标题】:Delete first column of csv file [duplicate]删除csv文件的第一列[重复]
【发布时间】:2020-02-13 05:44:33
【问题描述】:

我想知道如何使用 awk 或 sed 删除 csv 文件的第一列

类似这样的:

FIRST,SECOND,THIRD

类似的事情

SECOND,THIRD

提前致谢

【问题讨论】:

    标签: bash awk sed


    【解决方案1】:

    跟随 awk 将会帮助你。

    awk '{sub(/[^,]*/,"");sub(/,/,"")} 1'   Input_file
    

    以下 sed 也可能对您有所帮助。

    sed 's/\([^,]*\),\(.*\)/\2/'  Input_file
    

    解释:

    awk '                 ##Starting awk code here.
    {
      sub(/[^,]*/,"")     ##Using sub for substituting everything till 1st occurence of comma(,) with NULL.
      sub(/,/,"")         ##Using sub for substituting comma with NULL in current line.
    }
    1                     ##Mentioning 1 will print edited/non-edited lines here.
    '   Input_file        ##Mentioning Input_file name here.
    

    【讨论】:

    • 2个sub调用可以被sub(/[^,]*,/,"")合并为一个
    【解决方案2】:

    使用 awk

    $awk -F, -v OFS=, '{$1=$2; $2=$3; NF--;}1' file
    SECOND,THIRD
    

    【讨论】:

      【解决方案3】:

      使用 Sed

      sed -i -r 's@^\w+,@@g' test.csv
      

      抓住 ^ 行的开头,每个字符类 [A-Za-z0-9] 并下划线,直到我们找到逗号并替换为空。 在分隔符后添加 g 可以进行全局替换。

      【讨论】:

      • 我怀疑这是否会给出正确的答案。 .* 表示贪婪匹配,所以你要替换到最后一个逗号。
      • 对不起,我的错,我已经更新了代码。
      • 这已被标记为低质量的长度和内容。您是否介意详细说明您建议的命令。开关是干什么用的? ...
      【解决方案4】:

      使用 sed : ^[^,]+, 正则表达式表示第一列,包括第一个逗号。 ^ 表示行首,[^,]+, 表示任何一次或多次,但逗号符号后跟逗号。

      如果需要,您可以使用 -ised 在文件中进行更改。

      sed -r 's/^[^,]+,//' input
      SECOND,THIRD 
      

      【讨论】:

      • 没有 -r 选项:sed 's/^[^,]*,//' 输入
      • 这个对我有用,sed 's/[^,]*,//'
      猜你喜欢
      • 2014-06-30
      • 2019-07-02
      • 2020-09-17
      • 1970-01-01
      • 1970-01-01
      • 2015-03-11
      • 2012-07-19
      • 2013-06-05
      • 1970-01-01
      相关资源
      最近更新 更多