# 用法awk 'awk_program' a.txt
語法解析:
- a.txt 是awk要讀取的文件,可以是0個文件、一個文件或者多個文件;如果給定0個文件,則標識從標準輸入中讀取
- 單引號包圍的是awk代碼,也稱為awk程序;盡量使用單引號,因為在awk程序中經(jīng)常使用$符號,而$符號在shell中是變量符號,如果使用雙引號,則$符號會被shell解析為shell變量,然后進行變量替換;使用單引號,會讓$符號留給awk去解析
- awk程序中,大量使用大括號,大括號表示代碼塊,代碼塊中間可以直接連用,代碼塊內(nèi)部的多個語句使用分號”;”隔開
# 范例# 輸出a.txt中的每一行awk '{print $0}' a.txt# 多個代碼塊,代碼塊中多個語句# 輸出每行之后還輸出兩行:hello行和world行awk '{print $0}{print "hello";print "world"}' a.txt
對于awk '{print $0}' a.txt,它類似于shell的while循環(huán)while read line;do echo "$line";done
下面再分析該awk命令的執(zhí)行過程:
- 讀取文件第一行(awk默認按行讀取文件)
- 將所讀取的行賦值給awk的變量$0,于是$0中保存的就是本次所讀取的行數(shù)據(jù)
- 進入代碼塊{print $0}并執(zhí)行其中代碼print $0,即輸出$0,也即輸出當前所讀取的行
- 執(zhí)行完本次代碼之后,進入下一輪awk循環(huán):繼續(xù)讀取下一行(第二行)
- 退出awk