我正在尝试将文件名添加到每行的末尾作为新字段。它的工作原理除了获取我得到-
的文件名外。
基础文件:
070323111|Hudson
我想要的是什么:
070323111|Hudson|20150106.csv
我得到了什么:
070323111|Hudson|-
这是我的代码:
mv $1 $1.bak
cat $1.bak | awk '{print $0 "|" FILENAME}' > $1
答案 0 :(得分:5)
-
是在没有此类信息时显示文件名的方法。由于您正在执行cat $1.bak | awk ...
,awk
不是从文件读取而是从stdin读取。
相反,只需:
awk '...' file
在你的情况下:
awk '{print $0 "|" FILENAME}' $1.bak > $1
来自man awk
:
FILENAME
当前输入文件的名称。如果没有指定文件 命令行,FILENAME的值为“ - ”。但是,FILENAME是 在BEGIN规则中未定义(除非由getline设置)。