jon*_*ger 10 linux bash shell awk gawk
我正在写一个开始的gawk脚本
#!/bin/gawk -f
BEGIN { print FILENAME }
Run Code Online (Sandbox Code Playgroud)
我正在调用文件,./script file1.html但脚本只返回任何内容.有任何想法吗?
kur*_*umi 13
如果你真的想在BEGIN块中使用它,你可以使用ARGV [1]而不是FILENAME
awk 'BEGIN{print ARGV[1]}' file
Run Code Online (Sandbox Code Playgroud)
遇到第1行时可以打印文件名:
FNR == 1
Run Code Online (Sandbox Code Playgroud)
如果你想要不那么神秘,更容易理解:
FNR == 1 {print}
Run Code Online (Sandbox Code Playgroud)
我的前两个解决方案不正确.谢谢Dennis指出来.他的方式是正确的:
FNR == 1 {print FILENAME}
Run Code Online (Sandbox Code Playgroud)
直接从手册页(稍微重新格式化):
FILENAME:当前输入文件的名称.如果在命令行中未指定文件,则FILENAME的值为" - ".但是,在BEGIN块内部未定义FILENAME(除非由getline设置).