sed&awk
阿新 • • 發佈:2018-11-30
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