home products tech support contact us

 Linux 技術支援    ⇒   基礎篇    進階篇    補腦篇    指令索引    中⇒ENG
版權所有, 引用請註明出處
 

awk 文字的資料處理

awk 是一種純文字處理器,內建專屬的腳本語言(script language) 其語法很類似 C 語言,但沒 C 語言麼複雜 (因指令只約十幾個) ,且有支援 C 語言所沒有的正規表示法

awk 基本上以欄為單位來處理文字,如下例:

例:
$ echo -e "1 \t 2 \t 3 \t 4 \t 5" ←輸出數字 1~5 共 5 個欄
1        2        3        4        5
$ echo -e "1 \t 2 \t 3 \t 4 \t 5" | awk '{print $2,$4}←經 awk 處理只輸出第 2 和 4欄
2 4

上例 awk'{print $#}' ( # 為數字)是 awk 最基本用法,只輸出指定的欄位,awk 格式也可比較複雜如下例:

awk 內建許多"內建變數"(Build-in Variables),如下例中 "NR" 為累計讀入的列數,"NF"為目前列的欄位數

例:
$ echo 'aa bb cc dd' | awk '{print NF}' ←輸出顯示在螢幕的文字之欄位數
4
$ awk 'END{print NR}' FILE ←計算檔案的行數(同指令 "wc l")
$ awk 'NR <= 5' FILE ←輸出檔案前五行(同指令 "head -n5 FILE")
$ awk 'NR' FILE ←刪出空白的行
$ seq 1 100 | awk 'NR>=1 && NR < 8' ←列出範圍內的行



如果都沒接觸過 awk ,對其功能不是三言兩語可解釋,但很值得花個時間學習,有興趣可參考連結