AWK 是該編程語言自己的名稱,它編寫於 1977 年。其名稱是三個主要做者的姓的首字母縮寫:Drs. A. Aho、P. Weinberger 和 B. Kernighan。html
由於 AWK 是一種文本處理和模式匹配語言,因此它一般稱爲數據驅動的語言,程序語句描述須要進行匹配和處理的輸入數據,而不是程序操做步驟的序列,在許多語言中都是這樣的。AWK 程序在其輸入數據中搜索包含模式的記錄、對該記錄執行指定的操做,直到程序到達輸入的末尾。linux
AWK 語言是一種 UNIX 備用工具,它是一種功能強大的文本操做和模式匹配語言,特別適用於進行信息檢索,這使得它很是適合用於當今的數據庫驅動的應用程序。數據庫
雖然基本在linux的發行版中都沒有默認安裝gawk程序,可是我用的騰訊雲的機器上是已經安裝了,騰訊雲默認安裝了不少軟件。編程
我仍是比較喜歡用ubuntu的,可使用apt-get install 安裝,在mac中能夠用 brew install,或者你能夠下載了編譯安裝!ubuntu
gawk程序讓流編輯邁上了一個新的臺階,它 提供了一種編程語言而不僅是編輯器命令。經常使用來從大文本文件中提取數據元素,並將它們格式化成可讀的 報告。在gawk編程語言中,你能夠作下面的事情:編程語言
在上面的截圖中,已經展現了gawk的用法,和一些功能參數。編輯器
gawk會將以下變量分配給它在文本行中發現的數據字段,$0表明整個文本行;$1表明文本行中的第1個數據字段; $2表明文本行中的第2個數據字段; $n表明文本行中的第n個數據字段。awk中默認的字段分隔符是任意的空白字符。工具
AWK 程序由規則 組成,它們是一些模式,後面跟着由換行分隔的操做。當 AWK 執行一條規則時,它在輸入記錄中搜索給定模式的匹配項,而後對這些記錄執行給定的操做。命令行
好比我用上次那個文本 testfilecode
使用gawk '{print $4}' testfile
除了print操做,咱們還可使用其餘的操做
若是你對分隔符有特殊的要求,那麼你還可使用 -F後面接分隔符,好比gawk -F: '{print $1}' /etc/passwd
你也能夠組合使用命令行,好比echo "My name is Rich" | gawk '{$4="Christine"; print $0}'
第一條命令會給字段變量$4賦值。第二條命令會打印整個數據字段。
gawk可使用BEGIN在處理數據前或者處理後END執行腳本。
在 GAWK 中,其模式匹配機制相似於 egrep
命令的模式匹配機制。要僅輸出那些匹配模式的記錄,能夠在規則中指定該模式,使用斜槓字符括起來。
awk '/dog2/ { print }' testfile 去匹配下面的記錄
能夠寫成下面的多個匹配 awk '/dog2/ && /fox/ { print }' testfile
雖然awk和gawk有着強大的功能,可是用的不是不少,暫時就先寫這麼多吧!
參考:
http://www.runoob.com/linux/linux-comm-awk.html
https://www.cnblogs.com/xudong-bupt/p/3721210.html