60. FILENAME – 当前文件名
当您向 awk 程序指定多个输入文件时,
FILENAME
很有用。 这将为您提供 Awk 当前正在处理的文件的名称。
$ awk '{ print FILENAME }' employee.txt employee-multiple-fs.txt
employee.txt
employee.txt
employee.txt
employee.txt
employee.txt
employee-multiple-fs.txt
employee-multiple-fs.txt
employee-multiple-fs.txt
employee-multiple-fs.txt
employee-multiple-fs.txt
当您从标准输入读取值时,
FILENAME
变量将被设置为-
值。
在下面的示例中,由于我们没有提供任何输入文件,因此您应该在标准输入中键入记录。
在此示例中,我输入了第一行 "John Doe"
,awk 打印了最后两行。 您必须按 Ctrl-C
才能停止从标准输入读取。
$ awk '{print "Last name:", $2; print "Filename:", FILENAME}'
John Doe
Last name: Doe
Filename: -
当您从另一个程序将输入通过管道传输到 awk 时,上述情况也成立,如下所示。 以下还将
FILENAME
打印为-
。
$ echo "John Doe" | awk '{print "Last name:", $2; print "Filename:", FILENAME}'
Last name: Doe
Filename: -
BEGIN
块内的
FILENAME
将返回空值 “",因为 BEGIN
块适用于整个 awk 程序,而不适用于任何特定文件。