根据awk手册,BEGIN和END不用于匹配输入,而是用于向awk脚本提供启动和清除信息。这是给出的示例:
ls -l | \
awk 'BEGIN { print "Files found:\n" } /\<[a|x].*\.conf$/ { print $9 }'
Files found:
amd.conf
antivir.conf
xcdroast.conf
xinetd.conf
首先,这将打印一个字符串以输出。然后,它检查输入是否存在模式匹配,其中输入以a或x开头,后跟任意字符一次或多次,后跟.conf。对于任何匹配项,将打印第9列。
我们被迫使用从此处开始的事实,是否意味着awk最多只能使用一个包含BEGIN或END的打印功能?如果不是,那为什么我们不能一开始就不使用关键字BEGIN就使用打印功能呢?似乎BEGIN是多余的。