awk basename 作为列变量
awk basename as a column variable
我想要整个原始文件,最后一列是文件名(没有路径名)。看似简单,但每一次尝试都未能实现。我的目标是将此作为一个循环,其中 FLD0037 变为 FLD0${ID}。
我试过以下方法:
cat FLD0037.txt | awk '{print [=10=], FILENAME;}' >FLD0037.test1.txt
test.1 在最后一列给出 -。
cat FLD0037.txt | awk '{print [=11=], basename(FILENAME);}' >FLD0037.test2.txt
test.2 是一个空文件
cat FLD0037.txt | awk '{print [=12=], basename;}' >FLD0037.test3.txt
cat FLD0037.txt | awk -F"/" '{print [=12=], $NF;}' >FLD0037.test4.txt
cat FLD0037.txt | awk -F"/" '{print $NF;}' >FLD0037.test5.txt
cat FLD0037.txt | awk '{print basename [=12=];}' >FLD0037.test6.txt
test.3、test.5 和 test.6 看起来像原始文件,最后一栏什么也没写。
test.4 是原始文件,在新列中复制了数据。
谢谢,
这里的 cat
比 useless 多,因为 Awk 最终读取标准输入(因此 -
伪文件名)而不是实际文件。
一如既往,修复很简单:不要使用无用的 cat
。
awk '{print [=10=], FILENAME;}' FLD0037.txt >FLD0037.test1.txt
我想要整个原始文件,最后一列是文件名(没有路径名)。看似简单,但每一次尝试都未能实现。我的目标是将此作为一个循环,其中 FLD0037 变为 FLD0${ID}。
我试过以下方法:
cat FLD0037.txt | awk '{print [=10=], FILENAME;}' >FLD0037.test1.txt
test.1 在最后一列给出 -。
cat FLD0037.txt | awk '{print [=11=], basename(FILENAME);}' >FLD0037.test2.txt
test.2 是一个空文件
cat FLD0037.txt | awk '{print [=12=], basename;}' >FLD0037.test3.txt
cat FLD0037.txt | awk -F"/" '{print [=12=], $NF;}' >FLD0037.test4.txt
cat FLD0037.txt | awk -F"/" '{print $NF;}' >FLD0037.test5.txt
cat FLD0037.txt | awk '{print basename [=12=];}' >FLD0037.test6.txt
test.3、test.5 和 test.6 看起来像原始文件,最后一栏什么也没写。
test.4 是原始文件,在新列中复制了数据。
谢谢,
这里的 cat
比 useless 多,因为 Awk 最终读取标准输入(因此 -
伪文件名)而不是实际文件。
一如既往,修复很简单:不要使用无用的 cat
。
awk '{print [=10=], FILENAME;}' FLD0037.txt >FLD0037.test1.txt