如何使用unix提取文件名并添加为列
我在一个目录中有一堆文件如何使用unix提取文件名并添加为列,unix,append,filenames,Unix,Append,Filenames,我在一个目录中有一堆文件 file1.txt file2.txt file3.txt 每个文件都有相同的结构 i、 e 我想附加所有文件(不重复标题,但为文件名创建第三列,即 id, field, filename "a", 123, file1.txt "b", 234, file2.txt "c", 456, file3.txt 在unix中如何执行此操作? 我可以找出如何提取文件名 awk -v OFS=", " ' NR == 1 {print $0, "filename"
file1.txt
file2.txt
file3.txt
每个文件都有相同的结构
i、 e
我想附加所有文件(不重复标题,但为文件名创建第三列,即
id, field, filename
"a", 123, file1.txt
"b", 234, file2.txt
"c", 456, file3.txt
在unix中如何执行此操作?
我可以找出如何提取文件名
awk -v OFS=", " '
NR == 1 {print $0, "filename"}
FNR == 1 {next}
{print $0, FILENAME}
' file*
您可能猜到,FILENAME
变量包含正在处理的当前文件的名称。FNR
变量包含当前文件的记录编号,NR
包含已处理的记录总数。因此,NR==1
将是第一个文件的第一行
文档化——尽管这是到GNU awk的链接,但这些变量适用于所有awk
awk -v OFS=", " '
NR == 1 {print $0, "filename"}
FNR == 1 {next}
{print $0, FILENAME}
' file*