awk的使用
- 取得欄位值
awk 指令在讀取檔案或資料流時,以一行為單位,一次單以一行進行處理,預設的欄位以空白或Tab(\t)進行分隔,分隔完的欄位值從左邊第一欄為 $1 開始,往右遞增累加。在使用 awk 時,除了直接讀取檔案之外,也可以利用管線(pipe, |)將資料流導向給 awk 進行處理。
p.s. $0 代表未經分隔的完整一行, NF(保留字, 無$)代表全部欄位數
例如:將 ls -al 結果簡化成檔案名稱對應檔案擁有者
ls -al | awk '{print $9"\t=>\t"$3}'
- if-else
例如:Salary.txt
A 19000
B 22000
C 10500
D 65000
awk '{if($2 > 22000) {print $1" is rich!"} else {print $1" is poor..."}}' Salary.txt
// output
A is poor...
B is poor...
C is poor...
D is rich!
- 更改欄位分隔依據
例如分隔 csv 檔案時,所需用到的分隔依據就不再是空白或Tab(\t)了,此時可以使用參數 -F 更改欄位分隔符號。例如:
awk -F ',' '{print $1}' csv_file.txt
本文參考
Jedi Linuxer