shell學習之awk或gawk

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編程語言中,你能夠作下面的事情:編程語言

  • 定義變量來保存數據;
  • 使用算術和字符串操做符來處理數據;
  • 使用結構化編程概念(好比if-then語句和循環)來爲數據處理增長處理邏輯;
  • 經過提取數據文件中的數據元素,將其從新排列或格式化,生成格式化報告

在上面的截圖中,已經展現了gawk的用法,和一些功能參數。編輯器

gawk會將以下變量分配給它在文本行中發現的數據字段,$0表明整個文本行;$1表明文本行中的第1個數據字段; $2表明文本行中的第2個數據字段; $n表明文本行中的第n個數據字段。awk中默認的字段分隔符是任意的空白字符。工具

将 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

相關文章
相關標籤/搜索