轉載自:http://blog.sina.com.cn/s/blog_3d2d79aa0100h47h.htmlhtml
awk 是一種編程語言,用於在linux/unix下對文本和數據進行處理。數據能夠來自標準輸入、一個或多個文件,或其它命令的輸出(即管道)。它支持用戶自定義函數和 動態正則表達式等先進功能,是linux/unix下的一個強大編程工具。它在命令行中使用,但更可能是做爲腳原本使用。linux
awk的處理文本和數據的方式是這 樣的,它逐行掃描文件,從第一行到最後一行,尋找匹配的特定模式的行,並在這些行上進行你想要的操做。若是沒有指定處理動做,則把匹配的行顯示到標準輸出 (屏幕),即默認處理動做是print;若是沒有指定模式,則全部被操做所指定的行都被處理,即默認指定模式是所有。awk分別表明其做者姓氏的第一個字母。由於它的做者是三我的,分別是Alfred Aho、Brian Kernighan、Peter Weinberger。gawk是awk的GNU版本,它提供了Bell實驗室和GNU的一些擴展。正則表達式
像shell同樣,awk也有好幾種,常見的如awk、nawk、mawk、gawk,其中算法
awk:最初在1 9 7 7年完成,1 9 8 5年發表了一個新版本的awk,它的功能比舊版本加強了很多,awk 可以用很短的程序對文檔裏的資料作修改、比較、提取、打印等處理,若是使用C 或P a s c a l 等語言編寫程序完成上述的任務會十分不方便並且很花費時間,所寫的程序也會很大;shell
nawk: 在 20 世紀 80 年代中期,對 awk語言進行了更新,並不一樣程度地使用一種稱爲 nawk(new awk) 的加強版本對其進行了替換。許多系統中仍然存在着舊的awk 解釋器,但一般將其安裝爲 oawk (old awk) 命令,而 nawk 解釋器則安裝爲主要的 awk 命令,也可使用 nawk 命令。Dr. Kernighan 仍然在對 nawk 進行維護,與 gawk 同樣,它也是開放源代碼的,而且能夠免費得到;編程
mawk:mawk 是 awk 編程語言的解釋器。awk語言在多媒體數據文件以及文本的檢索和處理,算法的原型設計和試驗都有普遍的使用。mawk帶給awk新的概念,它實現了在《The AWK Programming Language》(Aho, Kernighan and Weinberger, The AWK Programming Language, Addison-Wesley Publishing, 1988.被認爲是 AWK 手冊。)中定義的 awk語言。mawk遵循 POSIX 1003.2 (草案 11.3)定義的 AWK 語言,包含了一些沒有在AWK 手冊中提到的特點,同時 mawk 提供一小部分擴展,另外聽說mawk是實現最快的awk;編程語言
gawk: 是 GNU Project 的awk解釋器的開放源代碼實現。儘管早期的 GAWK 發行版是舊的 AWK 的替代程序,但不斷地對其進行了更新,以包含 NAWK 的特性;函數
目前,你們都比較傾向於使用awk和gawk,本文中要介紹的awk是以GUN的gawk爲例的。Ubuntu系統中的各類awk的選項設置,能夠經過sudo update-alternatives --config awk來完成,實際上你經過手動修改軟連接也能實現。Debian最小化安裝的時候awk的連接是指向mawk的。工具