1. 程式人生 > >Shell 中的awk命令

Shell 中的awk命令

在linux上有很多處理文字的資訊,awk也是其中的一種,希望它能給你帶來方便
awk執行時,其瀏覽域標記為$1,$2....$n。這種方法稱為域標識。使用$1,$3標識參照第1和第3域,注意這裡用逗號隔開做域分割,$0標識所有域。


1.儲存awk的輸出
第一種,最簡單的方式是使用輸出重定向符號 > 檔名,下面的例子重2.定向輸出的檔案wow
$ awk '{print $0}' mfile.txt > wow
第二種,使用tee命令,在輸出到檔案的同時輸出到螢幕。例如輸出重定向檔案hello,同時輸出到螢幕,使用這種方法,在awk 命令結尾寫入 |tee hello
3.列印報告頭
輸出域名之間用一些空格使之更容易劃分,也可以在域間使用 tab 鍵加以劃分。加入tab鍵,使用tab鍵速記引用符\t,後面講對速記引用加以詳細的討論。也可以輸出檔案加入資訊頭。列印資訊頭放置在BEGIN模式部分,因為列印資訊頭被界定為一個動作,必須用大括號擴起來,在awk檢視第一條記錄前,資訊頭被列印。
例如:
$ awk 'BEGIN { print "NAME\tBel\n----------------------------------------------------------------"} {print $1"\t" $4}' myfile.txt
4.列印資訊尾
如果在末行加入end of report資訊,可使用END語句。END語句在所有文字處理動作執行完後才執行。END語句在指令碼中的位置放置在主要動作之後。下面簡單列印頭資訊並告知查詢動作完成。
$ awk 'BEGIN {PRINT "Name\n--------"} {print $1} END {"EDN-OF-REPORT}’ myfile.txt
5.awk錯誤提示
幾乎可以肯定,在使用awk時,將會在命令中碰到一些錯誤。awk將試圖列印錯誤行,但由於大部分命令都只在一行,以此幫助不大。
第一次使用awk時,可能被錯誤資訊攪得不知所措,但通過長時間和不斷的學習,可總結以下規則,在碰到awk錯誤時,可相應的查詢:
1.確保整個awk命令用單引號擴起來。
2.確保命令記憶體所有引號成對出現。
3.確保用花括號括起來動作語句,用圓括號括起條件語句。
4.可能忘記使用花括號,也許你認為沒有必要,但awk不這樣認為,將按之解釋語法。
6.正則表示式
awk 比grep多兩個元字元‘+’,‘?’,
+ 使用+匹配一個或多個字元。
? 匹配模式出現頻率,例如使用/XY?Z/匹配XYZ或YZ。
awk 條件操作符
<  小於      >= 大於等於
<= 小於等於  ~ 匹配正則表示式
== 等於    !~ 不匹配正則表示式
!= 不相等