1 前面的話
awk常常用於處理數據和生成報告。它以逐行掃描的方式,查找匹配某個特定模式的文本,同時可以對匹配的行進行非常精細的操作。
2 awk的格式:
awk 'pattern {action}' filename
2.1 pattern
其中pattern指的就是匹配的模式,類似於grep,不過和sed的匹配更相似。例如'/ mail /'就是匹配以mail開始的行。
2.2 action
action類似於sed在匹配模式後面跟上的命令,它的所用就是對匹配到的文本進行某種操作。例如'/ mail / {print $1}',它將匹配以mail開頭的行,並將其第一個字段打印出來。
3 awk的工作原理
awk以一行作為輸入,並將該行賦給內部變量$0;接著,awk將根據分割符將行分割成多個字段,每一個字段按照順序存儲在$1, $2… 最多可以達到100個。這個很類似shell腳本的參數,$0代表本身,$1往後是位置參數,代表每一個參數。接著awk可以對每一個字段進行相應的操作,這是grep和sed很難實現的。
~$ awk '/calls/ {print $2, $5}' test
System provided
Library within
# 首先匹配包含calls的行,接著顯示第2和第5個字段。
4 awk環境變量
NF 字段數
NR 記錄數
FS 分割符
OFS 輸出分割符