awk 以下簡單介紹:
1).保存awk輸出: #awk '{print $0}' filename>newfile
2).使用tee,在輸出到文件的同時輸出到屏幕(利用管道'|')
#awk '{print $0}' filename |tee newfile
3).打印報告頭,#awk 'BEGIN {print "hello,this is Title\n---------"}{print $0}' newfile
4).打印信息尾.#awk 'BEGIN{print $0} END {"end of file."}' filename
5).匹配,如下若在filename第二列中帶有BROWN,則打印信息
#awk '{if ($2~/BROWN/) print $0}' filename
6).精確匹配,同上,只是將~改為==
7).不匹配,有時要瀏覽信息並抽取不匹配操作的記錄,與~相反的符號是!,如下
#awk '$0 !~/BROWN/' filename
8).比較
如小於: #awk 'if ($1<$2) print $1' filename
9).設置大小寫#awk '[Gg]reen/' filename
10).任意字符,表達式/^...a/意為前三個字符是任意字符
#awk '$1~/^...a/' filename
11).或關係匹配,#awk '$0~/(YELLOW || RED)/' filename
12).與:&& ,或:||
13).awk內置變量
<1>.要快速查看記錄個數,應使用NR,如:#awk 'END {print NR}' filename <2>.以下使用NF變量顯示每一條讀記錄中有多少個域,並在END部份打印輸入文件名。 #awk '{print NR,NF,$0} END {print FILENAME}' filename
<3>.判斷並輸出. #awk '{if(NR>0 && $4~/BROWN/) print $0' filename
14).可以設置輸入域到域變量名。
15).域值比較操作。
@1.在BEGIN中給變量名賦值。 通常在BEGIN部分賦值是很有益的,可以在awk表達式進行改動時減少很大麻煩.
@2.在關係操作中使用實際數值,使用關係操作時必須用括號括起來.
#awk '{if($6<27) print $0}' filename
#awk 'BEGIN {BASELINE="27"}{if ($6
17).修改數據域取值
當在awk中修改任何域時,重要的一點是實際的文件可修改,改動的是cache中的awk複本,awk會在變量NR或NF中反映出修改的痕跡。
#awk '{if($1=="M.TANS")$6=$6-1;print $6}' filename
18).修改文本域
#awk '{if($1=="J.Troll")($1="JLTroll");print $1}' filename
19).只顯示修改記錄
#awk '{if($1=="J.Troll"){$1="JLTroll";print $1}}' filename
20).創建新的輸出域在awk中處理數據時,基於各域進行計算的創建新域是個好的習慣。 如下示例:
#awk 'BEGIN{print "Name Score\t"}if($6<$7){$8=$7-$6;print $8}' filename
21).增加列值
#awk 'tot+=$6;END{print "Club Total point." tot}' filename
22).使用模式打印文件名及其長度,放入變量tot中
#ls -l | awk'/^[^d]{print $9 "\t" $5}{tot+=$5} END {print "Total KB:tot"}'
23).awk內置的字符串函數
24).awk腳本文件如以上的所述的諸多情況,這裡只不過命令放在一個文件中,且該文件必須是!/bin/awk -f ,因為這樣才會使這個文件可以自解釋。 否則將不能作用。 為了容易分別,最好將文件帶一個擴展名.awk,完成對文件的編寫後,再利用chmod u+x使文件可以執行。
1).保存awk輸出: #awk '{print $0}' filename>newfile
2).使用tee,在輸出到文件的同時輸出到屏幕(利用管道'|')
#awk '{print $0}' filename |tee newfile
3).打印報告頭,#awk 'BEGIN {print "hello,this is Title\n---------"}{print $0}' newfile
4).打印信息尾.#awk 'BEGIN{print $0} END {"end of file."}' filename
5).匹配,如下若在filename第二列中帶有BROWN,則打印信息
#awk '{if ($2~/BROWN/) print $0}' filename
6).精確匹配,同上,只是將~改為==
7).不匹配,有時要瀏覽信息並抽取不匹配操作的記錄,與~相反的符號是!,如下
#awk '$0 !~/BROWN/' filename
8).比較
如小於: #awk 'if ($1<$2) print $1' filename
9).設置大小寫#awk '[Gg]reen/' filename
10).任意字符,表達式/^...a/意為前三個字符是任意字符
#awk '$1~/^...a/' filename
11).或關係匹配,#awk '$0~/(YELLOW || RED)/' filename
12).與:&& ,或:||
13).awk內置變量
<1>.要快速查看記錄個數,應使用NR,如:#awk 'END {print NR}' filename <2>.以下使用NF變量顯示每一條讀記錄中有多少個域,並在END部份打印輸入文件名。 #awk '{print NR,NF,$0} END {print FILENAME}' filename
<3>.判斷並輸出. #awk '{if(NR>0 && $4~/BROWN/) print $0' filename
14).可以設置輸入域到域變量名。
15).域值比較操作。
@1.在BEGIN中給變量名賦值。 通常在BEGIN部分賦值是很有益的,可以在awk表達式進行改動時減少很大麻煩.
@2.在關係操作中使用實際數值,使用關係操作時必須用括號括起來.
#awk '{if($6<27) print $0}' filename
#awk 'BEGIN {BASELINE="27"}{if ($6
當在awk中修改任何域時,重要的一點是實際的文件可修改,改動的是cache中的awk複本,awk會在變量NR或NF中反映出修改的痕跡。
#awk '{if($1=="M.TANS")$6=$6-1;print $6}' filename
18).修改文本域
#awk '{if($1=="J.Troll")($1="JLTroll");print $1}' filename
19).只顯示修改記錄
#awk '{if($1=="J.Troll"){$1="JLTroll";print $1}}' filename
20).創建新的輸出域在awk中處理數據時,基於各域進行計算的創建新域是個好的習慣。 如下示例:
#awk 'BEGIN{print "Name Score\t"}if($6<$7){$8=$7-$6;print $8}' filename
21).增加列值
#awk 'tot+=$6;END{print "Club Total point." tot}' filename
22).使用模式打印文件名及其長度,放入變量tot中
#ls -l | awk'/^[^d]{print $9 "\t" $5}{tot+=$5} END {print "Total KB:tot"}'
23).awk內置的字符串函數
24).awk腳本文件如以上的所述的諸多情況,這裡只不過命令放在一個文件中,且該文件必須是!/bin/awk -f ,因為這樣才會使這個文件可以自解釋。 否則將不能作用。 為了容易分別,最好將文件帶一個擴展名.awk,完成對文件的編寫後,再利用chmod u+x使文件可以執行。
全站熱搜
留言列表