shell學習之awk篇

2021-06-28 06:54:30 字數 1539 閱讀 7243

網上關於awk的部落格說的也是夠多的了,之所以再寫有兩點原因:1 大部分博文說的不夠全面  2 作為自己系統學習shell的乙個記載。

0. 以下示例說明均以此資料作為依據,檔名為countries

ussr	        8649	275	asia

canada 3852 25 north america

china 3705 1032 asia

usa 3615 237 north america

brazil 3286 134 south america

india 1267 746 asia

mexico 762 78 north america

france 211 55 europe

japan 144 120 asia

germany 96 61 europe

england 94 56 europe

1. awk語法

awk的語法非常簡單即:awk 'pattern ' file  其中pattern是每一行對應的匹配模式,也就是說只有當前行滿足pattern模式,才會執行裡面的action動作。action則是具體想要進行什麼操作,比如資料計算 寫檔案 輸出等。file則是要處理的資料檔案,可以是乙個或多個。當沒有時,系統預設使用者從命令列輸入,直到遇到結束符。

比如如果我想把countries裡的包含「america」這個字串的行都輸出,可以這樣做:

上面語句中$0代表整行 『~』 表示包含,/name/ 則表示包含「name」的字串。

當然pattern並不是必須的,action也不是只能有乙個。像這種語法格式也是正確的 awk 『 pattern 』。當沒有pattern時,表示當前輸入行總是滿足條件;有多個pattern 模式時,awk 會在當前行執行完一組pattern 模式後再執行下一組。

比如我想把countries中所有行都列印出來:      

awk 『』 countries                         # 沒有action,預設所有行都匹配

2. awk 中的關鍵字

這裡只例舉一些常用的關鍵字,不常用到的就不一一枚舉了。

下面通過幾個例子說明各個關鍵字的用處

1)將countries中的所有資料列印出,並在開頭列印出每個欄位的意思    

可以理解begin的意思了吧?  ps: 上面語句中若後面沒有引數則預設列印整行

2)將最後一行列印出來

shell指令碼之awk

一 什麼是awk awk其實相當於一門可以處理資料文字的語言,這麼說的原因是其具有很多類c語言的語法,如 變數,陣列,函式,流程控制等,其由aho,weinberger,kernighan大約在1977年開發完成,隨後被引入unix linux中。二 awk可以幹什麼 awk是乙個非常強大的資料處理...

awk學習 例子篇

chinaunix awk例子參考 精確匹配 awk 3 48 grade.txt awk 0 brown grade.txt awk 4 brown 2 grade.txt awk grade.txt 設定大小寫 可使用 符號 awk gg reen grade.txt 任意字元 awk 1 a ...

shell指令碼之awk 一

2.linux中常用的awk編譯器版本有mawk,gawk。redhat使用的是gawk,ubuntu使用的是mawk.1.逐行掃瞄檔案,尋找匹配你指定模式的行,並在這些行上執行你指定的操作 2.awk 基本結構包括模式匹配 用於找到要處理的行 和處理過程 即處理動作 3.awk 有兩個特殊的模式 ...