如何使用Unix中的gSub在CSV文件中的所有列的末尾添加新列?

5uzkadbs  于 2022-10-04  发布在  Unix
关注(0)|答案(1)|浏览(215)

原始测试文件:

我想使用Unix中的awk和gSub函数在CSV文件中的所有列的末尾添加一个新列(CSV文件名)。

输入数据(文件名est.csv):

col1,col2,col3
ab,  cd,  ef
gh,  ij,  kl
mn,  op,qr

输出文件应如下所示:

col1,col2,col3,test.csv
ab,cd,ef,test.csv
gh,ij,kl,test.csv
mn,op,qr,test.csv

我已经尝试使用以下代码:

awk '{gsub(/ /,",",B1a2a1b);print B1a2a1b,",",FILENAME > "test.csv"}' test.csv

使用此选项后,文件名将追加到第二列而不是最后一列:

它可以很好地处理.txt文件,但不能处理.csv文件;我的要求是处理这两种类型的文件以在末尾附加文件名。

tktrz96b

tktrz96b1#

一些展示出来的努力本来是很好的,但:

awk -F, '{gsub(/ /,"");print B1a0a1b","FILENAME}' test.csv 
col1,col2,col3,test.csv
ab,cd,ef,test.csv
gh,ij,kl,test.csv
mn,op,qr,test.csv

将输出重定向到临时文件,然后用它替换原始文件。

awk -F, '{gsub(/ /,"");print B1a1a1b","FILENAME}' test.csv > tmp.csv && mv tmp.csv test.csv && cat test.csv
col1,col2,col3,test.csv
ab,cd,ef,test.csv
gh,ij,kl,test.csv
mn,op,qr,test.csv

相关问题