我在目录中有一堆文件,例如
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中执行此操作? 我可以弄清楚如何提取文件的名称
答案 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