在空文件上显示和/或使用awk FILENAME

时间:2015-11-02 14:21:21

标签: awk

有没有办法打印文件名"空"文件在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

1 个答案:

答案 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]
    }
}' *