2016年3月21日 星期一

awk的使用

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