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不匹配任何的輸入文件,可是執行動做塊中的全部動做,它在整個輸入文件處理完成後被執行


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

相關文章
相關標籤/搜索
本站公眾號
   歡迎關注本站公眾號,獲取更多信息