加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 综合聚焦 > 服务器 > 安全 > 正文

shell – 如何在awk中的BEGIN块中使用变量?

发布时间:2020-12-15 21:31:28 所属栏目:安全 来源:网络整理
导读:我尝试像这样运行一行命令 touch ./py.py; awk 'BEGIN{print FILENAME}' ./py.py 并期望得到结果./py.py但只得到一个空行.但是,如果我没有BEGIN块,它可以工作: touch ./py.py; awk '{print FILENAME}' ./py.py 似乎FILENAME变量在BEGIN块中不可用.这是为什
我尝试像这样运行一行命令

touch ./py.py; awk 'BEGIN{print FILENAME}' ./py.py

并期望得到结果./py.py但只得到一个空行.但是,如果我没有BEGIN块,它可以工作:

touch ./py.py; awk '{print FILENAME}' ./py.py

似乎FILENAME变量在BEGIN块中不可用.这是为什么?如何在BEGIN块中使用该变量?

解决方法

Awk可以在一次调用中处理多个文件(例如awk'{whatever}’file1 file2 file3).当awk启动时,在打开第一个文件之前执行BEGIN块,而不是在每个文件的开头执行(END块类似).有人可能会争辩说,将awk扩展为具有每个文件的BEGIN / END挂钩可能会有用,但是在我使用的任何当前版本的awk / nawk / gawk中都不存在它们…

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读