1. 程式人生 > >sed&awk

sed&awk

awk

awk命令模式:

awk 'pattern { action }' input

pattern欄位是可選的,用於執行邏輯判斷。action欄位必要的,用於操作,支援的內容就多了,可以列印,根據引數作運算等等。預設是根據空格或\t來分列的。

測試輸入樣本:

Beth    4.00    0
Dan 3.75    0
kathy   4.00    10
Mark    5.00    20
Mary    5.50    22
Susie   4.25    18

列印首列:

awk '{print $1}'  input

支援數字(整型、浮點型之間相互)比較:

awk '$3 <= 0 {print $1}'  input

支援字串比較:

awk '$1 == "Mary" {print $1}'  input

支援||&&:

awk '$3 <= 0 || $3 >= 22 {print $1}'  input
awk '!($3 >= 0 && $3 < 22) {print $1}'  input

pattern欄位支援運算:

awk '$3 * $3 > 9 {print $1}'  input

以兩個/括起來的pattern支援正則:

awk '/Ma.k/ {print $1}'  input

支援邏輯取反符號:

awk '!/Ma.k/ {print $1}'  input

支援多個輸入檔案:

awk '{print $1}'  input1 input2

支援從檔案讀取命令:

awk  -f executefile  input

列印整行:

awk '{print $0}'  input
awk '{print}'  input

不清楚有多少列,列印最後一列:

awk '{print $NF}'  input

列印列數:

awk '{print NF}'  input

支援計算:

awk '{print  $2 * $2 * $3}'  input

,號會被輸出成空格,列印多列需用,分隔:

awk '{print  $2,$3}'  input

列印行號:

awk '{print  NR}'  input

插入常量字串:

awk { print "total pay for", $1, "is", $2 * $3 } input

使用printf進行格式化輸出:

awk '{ printf("total pay for %s is %.2f\n", $1, $2 * $3) }'  input

改變分隔符(-F須放在前面):

awk -F ">"   '{print  $3}'  input
awk -F ","   '{print  $3}'  input

支援以[]:隔開多個分隔符(不能有空格,順序無關):

awk -F [",":"|"] '{print $3}' input