awk

awk中的END和BEGIN字段的执行顺序server

BEGIN模块后紧跟着动做块,这个动做块在awk处理任何输入文件以前执行awk

中间模块为动做模块文件读取

END模块后紧跟着动做块,这个动做块在awk处理任何输入文件以后执行文件


for exampleco

[root@server1 conf]# awk 'BEGIN{print n}' httpd.conf  n=1

[root@server1 conf]#
httpd

输出结果为空,由于BEGIN在全部执行语句以前,因此后边的没法读取

[root@server1 conf]# awk '{print n}' n=1 httpd.conf | head
1
1
1
1
1
1
1
1
1
1
[root@server1 conf]#

在中间的时候读取后边的文件输入,可是前面的n=1不是一个文件,因此日后继续,直到读取一个文件(httpd.conf),那么前面的n=1就认为为复制语句,因此会输出n的值

[root@server1 conf]# awk 'END {print n}' n=1 httpd.conf
1
[root@server1 conf]#

END模块是在最后执行,由于在中间模块已经将文件读取完了,已经给n复制为1,因此END模块输出1

END不匹配任何的输入文件,可是执行动做块中的全部动做,它在整个输入文件处理完成后被执行


(注:我的理解,有什么不妥,请多多指教)

相关文章
相关标签/搜索
本站公众号
   欢迎关注本站公众号,获取更多信息