【问题标题】:How to add a new column in a CSV file如何在 CSV 文件中添加新列
【发布时间】:2013-07-25 17:37:58
【问题描述】:

如何使用 shell 脚本中的文本文件在 CSV 文件中添加一个新列,其中列名作为日期填充数据。

输入文件:input.csv

DESC,20-07,21-07,22-07,23-07,24-07,25-07
A,1,2,3,4,5
B,WD,DSF,GFH,SDF,SDF
C,FG,ZX,CRST,SDF,SEF

文本文件:abc.txt

26-07
ew
we
we

我想要这样的输出文件:output.csv

DESC,20-07,21-07,22-07,23-07,24-07,25-07,26-07
A,1,2,3,4,5,ew
B,WD,DSF,GFH,SDF,SDF,we
C,FG,ZX,CRST,SDF,SEF,we

我想要一个脚本,每天在 CSV 文件中添加一列。

【问题讨论】:

    标签: shell sed


    【解决方案1】:

    您可以使用paste 命令执行此操作:

    $ paste -d',' input abc
    DESC,20-07,21-07,22-07,23-07,24-07,25-07,26-07
    A,1,2,3,4,5,ew
    B,WD,DSF,GFH,SDF,SDF,we
    C,FG,ZX,CRST,SDF,SEF,we
    

    pr 命令:

    $ pr -mts',' input abc
    DESC,20-07,21-07,22-07,23-07,24-07,25-07,26-07
    A,1,2,3,4,5,ew
    B,WD,DSF,GFH,SDF,SDF,we
    C,FG,ZX,CRST,SDF,SEF,we
    

    【讨论】:

    • 最适合这项工作的工具是粘贴,+1
    【解决方案2】:

    另一个选项可能是 awk:
    awk 'NR == FNR {if(x == 0) {x=1};a[x]=$0;x++;next}{for(z=1; z < x; z++){if (z <= NF){print a[z]","$z} else {print a[z]}}}' input.csv abc.txt > output.csv

    这考虑了 input.csv 的行数多于 abc.txt 的列数的情况。

    【讨论】:

      猜你喜欢
      • 2012-06-19
      • 1970-01-01
      • 2017-06-22
      • 1970-01-01
      • 2016-09-10
      • 2021-09-02
      • 2018-05-20
      • 2016-11-24
      • 2022-11-03
      相关资源
      最近更新 更多