我想使用awk命令将文件名中的所有数字附加到csv文件的开头。
此刻,我正在使用下面的代码将文件名仅附加到csv文件的开头,但是我想将字符串中的所有数字添加到文件名之前。
awk '{print "\"" FILENAME "\"," $0}' filename_1.csv >> filename_2.csv
有人可以帮我吗?
filename_1.csv文件的示例
name,id,color
fred,1,blue
james,2,green
tom,3,purple
预期输出:
1,filename_1.csv,name,id,color
1,filename_1.csv,fred,1,blue
1,filename_1.csv,james,2,green
1,filename_1.csv,tom,3,purple
预先感谢...
答案 0 :(得分:0)
这里是一个:
$ awk 'FNR==1{ # first record
match(FILENAME,/[0-9]+/) # search for the first string of numbers
}{ # if found, print numbers, filename and record:
print (RSTART?substr(FILENAME,RSTART,RLENGTH) ",":"") FILENAME "," $0
}' filename_1.csv
输出:
1,filename_1.csv,name,id,color
1,filename_1.csv,fred,1,blue
1,filename_1.csv,james,2,green
1,filename_1.csv,tom,3,purple
如果文件名中没有数字,请不要打印它们,例如文件foo
的输出:
foo,name,id,color
foo,fred,1,blue
答案 1 :(得分:0)
$ awk 'BEGIN {FS=OFS=","} FNR==1 {fn=FILENAME; split(fn, a, /[_.]/); n = a[2]} { print n, fn, $0 }' filename_1.csv
1,filename_1.csv,name,id,color
1,filename_1.csv,fred,1,blue
1,filename_1.csv,james,2,green
1,filename_1.csv,tom,3,purple