有没有办法打印文件名"空"文件在awk。
尝试回复另一个需要文件对等的awk问题(1个文件+相同的文件名+扩展名)我创建了几个带触摸的文件(所以空的一个)。 让我们说:
file1.raw
file1.raw.ext
file2.raw
file2.raw.ext
我比使用代码
awk 'FNR==1{print FILENAME;print FILENAME".ext"};#some other action on line' file*.raw
结果为空(对,FNR永远不为1)。如何处理打印文件的名称?是FNR==0
还是BEGINF
?我可以使用参数列表并进行比较,但这将被异步处理(FNR的BEGIN或END = = 1至少有1行的文件)
expected result
file1.raw
(some action result here if file1.raw was not empty)
file1.raw.ext
file2.raw
(some action result here if file2.raw was not empty)
file2.raw.ext
答案 0 :(得分:1)
为什么有些主持人(@ChrisF)第一次删除了这个问题,但这是对这个问题的正确答案所以让我们再试一次,如果那个人有问题或评论,那么也许他们可以像合理的人那样发布它错误删除正确答案:
使用GNU awk:
awk 'BEGINFILE{print FILENAME}1' *
与其他awks(未经测试):
awk '
FNR==1 {
for (++ARGIND;ARGV[ARGIND]!=FILENAME;ARGIND++) {
print ARGV[ARGIND]
}
print FILENAME
}
{ print }
END {
for (++ARGIND;ARGIND in ARGV;ARGIND++) {
print ARGV[ARGIND]
}
}' *