GAWK 脚本 - 在 BEGIN 部分打印文件名
我正在编写一个 gawk 脚本,开始时
#!/bin/gawk -f
BEGIN { print FILENAME }
我通过 ./script file1.html
调用该文件,但该脚本什么也不返回。有什么想法吗?
I am writing a gawk script that begins
#!/bin/gawk -f
BEGIN { print FILENAME }
I am calling the file via ./script file1.html
but the script just returns nothing. Any ideas?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(4)
如果你确实想在 BEGIN 块中使用它,你可以使用 ARGV[1] 而不是 FILENAME
you can use ARGV[1] instead of FILENAME if you really want to use it in BEGIN block
您可以在遇到第 1 行时打印文件名:
如果您想不那么神秘,更容易理解:
更新
我的前两个解决方案是不正确的。谢谢丹尼斯指出这一点。他的做法是正确的:
You can print the file name when encounter line 1:
If you want to be less cryptic, easier to understand:
UPDATE
My first two solutions were incorrect. Thank you Dennis for pointing it out. His way is correct:
直接来自手册页(稍微重新格式化):
Straight from the man page (slightly reformatted):
根据 Hai Vu 的回答,我建议如果您只想为每个文件打印一次文件名,则需要将其包含在条件中。
Building on Hai Vu's answer I suggest that if you only want the filename printed once per file it needs to be wrapped in a conditional.