Linux文本處理三劍客之awk學習筆記04:工作流程

工作流程

可以參考man手冊。

man --pager='less -p ^"AWK PROGRAM EXECUTION"' awk

示例

awk -v a=1 -v b=2 'BEGIN{...}{...main...}END{...}' x=3 a.txt y=4 b.txt z=5 
  1. 解析CLI中-v選項的變量賦值。
  2. 將awk代碼(包含-v選項的變量賦值)編譯成awk可以識別的內部格式。
  3. 執行BEGIN代碼塊。
  4. 根據RS讀取文件(根據ARGV數組元素決定待讀取的文件)並劃分記錄。如果沒有待讀取的文件則從STDIN中讀取。每讀取一條記錄就執行一次main代碼塊。
    • 若待讀取的文件(即位於非選項型參數位置)的文件名格式爲var=val,那麼將其識別爲變量賦值。由於awk工作流程的執行順序,因此該變量不存在於BEGIN代碼塊中,也不存在於出現在此變量之前的文件。例如在執行a.txt時,其main代碼塊中無法識別變量y和變量z。所有此處的變量在END代碼塊中均有效。
    • 每讀取一條記錄:
      • 就設置一次NR、FNR、RT和$0等變量;
      • 根據PROCINFO["FS"]劃分字段,設置位置參數/變量$1、$2至$NF;
      • 執行main代碼塊:pattern通過則執行action,否則不執行。
  • 執行END代碼塊。
    發表評論
    所有評論
    還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
    相關文章