awk - 减去而不是FILENAME

时间:2015-01-07 16:51:49

标签: unix awk

我正在尝试将文件名添加到每行的末尾作为新字段。它的工作原理除了获取我得到-的文件名外。

基础文件:

070323111|Hudson

我想要的是什么:

070323111|Hudson|20150106.csv

我得到了什么:

070323111|Hudson|-

这是我的代码:

mv $1 $1.bak
cat $1.bak | awk '{print $0 "|" FILENAME}' > $1

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设置)。