如何使用unix提取文件名并添加为列

时间:2016-02-18 01:38:55

标签: unix append filenames

我在目录中有一堆文件,例如

file1.txt
file2.txt
file3.txt

每个文件都具有相同的结构 即

id,  field
"a", 123
"b", 234
"c", 456

我想附加所有文件(没有标题重复但为文件名创建第三列,即

id,  field, filename
"a", 123, file1.txt
"b", 234, file2.txt
"c", 456, file3.txt

我如何在unix中执行此操作? 我可以弄清楚如何提取文件的名称

1 个答案:

答案 0 :(得分:3)

awk -v OFS=", " '
    NR == 1 {print $0, "filename"}
    FNR == 1 {next}
    {print $0, FILENAME}
' file* 

您可能猜到,FILENAME变量包含正在处理的当前文件的名称。 FNR变量包含当前文件的记录号,NR包含已处理的记录总数。因此,NR == 1将是第一个文件的第一行

记录here - 虽然这是GNU awk的链接,但这些变量适用于所有awks