awk 比較傾向于,將一行數(shù)據(jù)分成數(shù)個『欄位』來處理,默認(rèn)的『欄位的分隔符號為 "空白鍵" 或 "[tab]鍵" 』。較sed命令作用于一整行數(shù)據(jù)不同的是,awk 適合處理小型的數(shù)據(jù)數(shù)據(jù)處理。
語法
awk '條件類型1{動作1} 條件類型2{動作2} ...' filename
- 如果不需要限制,則條件類型可為空。
- 每一行拆分后,每個欄位都是有變量名稱的,那就是
2... 等
awk內(nèi)置變量

image.png
awk 的處理流程
- 讀入第一行,并將第一行的數(shù)據(jù)按欄位拆分,填入 $0, $1, $2.... 等變量當(dāng)中;
- 依據(jù) "條件類型" 的限制,判斷是否需要進行后面的 "動作";
- 做完所有的動作與條件類型;
- 若還有后續(xù)的『行』的數(shù)據(jù),則重復(fù)上面 1~3 的步驟,直到所有的數(shù)據(jù)都讀完為止
示例
awk -F ':' '{print $1}' /etc/passwd按照:進行分割,取第一個欄位awk 'BEGIN {FS=":"} {print $1 "\t" $3}' /etc/passwd同上,另外一種寫法awk -F ':' 'NR==1 {print $1}' /etc/passwd按照:進行分割,如果目前處理的是第一行,則取第一個欄位awk -F ':' 'NR==1 {print $1};$1=="admin" {printf $1 "\t" $3}' /etc/passwd
多個動作時,利用分號或者回車鍵進行分割。
參考:http://cn.linux.vbird.org/linux_basic/0330regularex.php#awk