如何在CSV文件中添加新列

时间:2013-07-25 17:17:00

标签: shell sed

如何使用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文件中添加一列的脚本。

2 个答案:

答案 0 :(得分:4)

您可以使用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 :(得分:0)

另一种选择可能是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有更多行的情况。