awk basename作为列变量

时间:2015-09-28 10:31:00

标签: awk filenames

我希望整个原始文件的最后一列是文件名(没有路径名)。这似乎很简单,但每次尝试都未能实现。我的目标是将FLD0037变为FLD0 $ {ID}。

我尝试了以下内容:

cat FLD0037.txt | awk '{print $0, FILENAME;}' >FLD0037.test1.txt

test.1给出 - 在最后一栏。

cat FLD0037.txt | awk '{print $0, basename(FILENAME);}' >FLD0037.test2.txt

test.2是一个空文件

cat FLD0037.txt | awk '{print $0, basename;}' >FLD0037.test3.txt
cat FLD0037.txt | awk -F"/" '{print $0, $NF;}' >FLD0037.test4.txt
cat FLD0037.txt | awk -F"/" '{print $NF;}' >FLD0037.test5.txt
cat FLD0037.txt | awk '{print basename $0;}' >FLD0037.test6.txt

test.3,test.5和test.6看起来像原始文件,没有写在最后一栏。

test.4是原始文件,其数据在新列中重复。

谢谢,

1 个答案:

答案 0 :(得分:0)

此处cat超过useless因为Awk最终会读取标准输入(因此-伪文件名)而不是实际文件。

与往常一样,修复很简单:不要使用无用的cat

awk '{print $0, FILENAME;}' FLD0037.txt >FLD0037.test1.txt