gpt4 book ai didi

shell - 如何在 awk 的 BEGIN block 中使用变量?

转载 作者:行者123 更新时间:2023-12-05 00:34:16 25 4
gpt4 key购买 nike

我尝试运行这样的单行命令

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

并期望得到结果 ./py.py但只得到一个空行。但是,如果我在没有 BEGIN 的情况下这样做 block ,它的工作原理:
touch ./py.py; awk '{print FILENAME}' ./py.py

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

最佳答案

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

关于shell - 如何在 awk 的 BEGIN block 中使用变量?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10916134/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com