awk正則表達式及內置函數實例詳解:
1、模糊匹配:
復制代碼 代碼如下:
awk ‘{if($3~/97/) print $0}' data.f:如果第三項中含有”97”則打印該行
awk ‘{if($4!~/ufcx/) print $0}' data.f:如果第三項中不含ufcx有則打印
2、精確匹配:
復制代碼 代碼如下:
awk ‘{if($5==66) print $0}' data.f:如果第五項是66則打印
awk ‘{if($5!=66)print $0}' data.f : 如果第五項不是66則打印
awk ‘{if($1>$5) print $0}' data.f:如果第一項大于第五項則打印
3、大小寫匹配:
復制代碼 代碼如下:
awk ‘{if(/[Ss]ept/) print $0}' data.f:符合,則打印一行。
awk ‘/[Ss]ept/ {print $2}' data.f:符合,則打印第二字段
4、任意匹配:
復制代碼 代碼如下:
awk ‘{if($2 ~/^.e/) print $0}' data.f:第二字段中,第二個字符為e,輸出
awk ‘{if($4 ~/(lps|fcx)/) print $0}' data.f:第四個字段含有lps或fcx則輸出
5、&&,||:
復制代碼 代碼如下:
awk ‘{if($3 ~/1993/ && $2==”sept”) print $0}' data.f:兩邊都真則輸出
awk ‘{if($3 ~/a9/ || $2==”sept”) print $0}' data.f:一邊為真則輸出
6、變量定義:
awk ‘{date=$2;price=$5; if(date ~/[Ss]ept/) print “price is ” price}' data.f:變量定義,滿足date是sept或者Sept的將price輸出。
7、修改數值(源文件數值不變)
復制代碼 代碼如下:
awk ‘{BASELINE=42; if($1>BASELINE) $5=$5+100; print $0}' data.f:三行程序,以“;”分割
如果修改的是文本域,就要添加“”””。例如:awk ‘{if($2==”may”) $2=”tt”; print $0}' data.f上邊都是顯示所有數據,awk ‘{if($2==”may”) {$2=”tt”; print $0}}' data.f這個只顯示修改數據,仔細看看,其實語法和c一樣,只是最外邊添加了一個{}符號。
8、創建新域:(源文件數值不變)
復制代碼 代碼如下:
awk ‘{if($5>$1){$8=$5-$1;print $1,$8}}' data.f:
或者awk ‘{if($5>$1){diff=$5-$1;print $1,diff}}' data.f9、數據統計:
awk ‘{(total+=$5)}END{print total}' data.f:“{(total+=$5)}”和“{print total}”代表兩個不同的代碼段,如果沒有END每次的累積結果都會輸出,END可以理解為代碼段落的標志,這樣只輸出最終結果即{print total}只執行一次。
10、統計文件大?。?/strong>
復制代碼 代碼如下: