AWK

本章你要掌握的內容以下:linux

1    awk的介紹正則表達式

2    awk的基本用法算法

3    awk的變量編程

4    awk的格式化數組

5    awk的操做符編程語言

6    awk條件判斷ide

7    awk的循壞函數

8    awk的數組測試

9    awk的函數spa

10   調用系統命令

一  awk的介紹:

你們最先據說awk的應該是在文本三劍客當中,那就是grep、sed、awk。可是awk能夠說是裏面最厲害的了,有人說你的linux學的有多麼的好,在awk當中均可以知足你,由於awk它是一門編程語言,它主要用於對文本和數據的掃描與處理,能夠生成報告生成器,文本處理的格式化輸出。awk有不少種版本,如:awk、nawk、mawk、gawk、MKS awk、take..  這其中有開源產品也有商業產品。

1.1   awk的工做原理:

awk  'BEGIN{commands}   pattern {commands}   END{commands}'

第一步:執行BEGIN{commands}語句塊中的語句;

第二步:從文件或標準輸入(stain)讀取一行,而後執行pattern{commands}語句塊,它逐行掃描,從第一行到最後一行重複這個過程,知道文件被徹底讀取。

第三步:當讀到輸入流末尾時,執行END{commands}語句塊。

解釋說明:

BEGIN語句塊在awk開始從輸入流中讀取以前被執行,這是一個可選的語句塊,好比變量初始化、打印輸出表格的表頭等語句一般能夠寫在BEGIN語句塊中。

pattern語句塊中的通用命令時最重要的部分,它也是可選的,若是沒有提供pattern語句塊,則是默認執行{print}。既打印每個讀取到的行,awk讀取的每一行都會被執行該語句塊。

END語句塊在awk從輸入流中讀取完全部的行以後就被執行,好比打印全部行的 分析結果這類信息彙總都是在END語句塊中完成,他也是一個可選的語句塊。

1.2  awk的基本結構:

awk 'BEGIN{print "start"} pattern{commands} END{print "end"}'file

一個awk一般有BEGIN語句塊、可以使用模式匹配的通用語句塊、END語句塊三部分組成,這三個部分是可選的。任意一個部分均可以不出如今腳本中。

1.3   awk的模式和操做:

awk腳本是由模式和操做組成的。那什麼是模式那,下面這些都是:

1 /正則表達式/:使用通配符的擴展集。

2 關係表達式:使用運算符進行操做,能夠是字符串或數字的比較測試。

3模式匹配表達式:用運算符~表示匹配和!~表示不匹配。

4 BEGIN語句塊、pattern語句塊、END語句塊:

操做由一個或多個命令、函數、表達式組成,有以下這些:

1 變量和數組賦值

2 輸出命令

3 內置函數

4控制流語句

1.4  awk命令格式和選項

語法形式:

blob.png

經常使用命令選項:

1 -F fs fs指定輸入分隔符,fs能夠是字符串或正則表達式,如-F:

2 -v var=value 賦值一個用戶定義變量,將外部變量傳給awk

3 -f scripfile 從腳本文件中讀取awk命令

二  awk的基本用法

blob.png


blob.png

三   awk的變量:分爲內置和自定義變量。

 內置的變量有下面這些:

  1. FS:輸入字段分割符

  2. OFS:輸出字段分隔符

  3. RS:輸入記錄分隔符,指定輸入時的換行符,原來的行符仍有效

  4. ORS:輸出記錄分隔符,輸出時用指定符號代替換行符

  5. NF:字段數量

  6. NR:行號

  7. FNR:各文件分別計數,行號

  8. FILENAME:命令行參數的個數

  9. ARGC命令行參數的個數

  10. ARGV:數組,保存的是命令行所給定的個參數

舉例說明:

1 在a.txt中用「;」作分隔符,打印出第1行和第3行。

blob.png

2 ORS的使用方法

blob.png

3 NF的使用方法,在etc/passwd中列出字段數量,

blob.png

blob.png

4 NR的使用方法

blob.png

blob.png

5  FNR的用法

blob.png

blob.png

6  ARGV的用法

blob.png

blob.png

自定義變量

舉例說明,注意這裏面加「,」和不加的輸出結果的區別

blob.png

blob.png

四  awk的格式化

print和printf的區別是什麼:print能自動換行,只顯示字符,printf不能自動換行,可是很是強大,能夠指定格式,是個內部命令。

blob.png

格式符:

  1. %c: 顯示字符的ASCII碼

  2. %d,%i:顯示十進制整數

  3. %e,%E:顯示科學計數法數值

  4. %f:顯示爲浮點數

  5. %g,%G:以科學計數法或浮點形式顯示數值

  6. %s:顯示字符串

  7. %u:無符號整數

  8. %%:顯示%自身

修飾符:

#[.#]:第一個數字控制顯示的寬度;第二個#表示小數點後精度,#表示數字

-:左對齊(默認右對齊)

+:顯示數值的正負符號

舉例說明:

blob.png

操做符分爲下面這些:

  1. 算數操做符

  2. 字符串操做符

  3. 賦值操做符

  4. 比較操做符

  5. 模式匹配符

  6. 邏輯操做符                  

一 算數操做符

blob.png


二 字符串操做符:沒有符號的操做符,字符串連接。

若是你不理解能夠看一下這個例子就明白了。

blob.png

三 賦值操做符

blob.png

四   比較操做符

  blob.png

舉例說明請打印出奇偶數:

blob.png

解釋說明:

由於"i=!i"中第一次i是空的,那非空就是真,因此輸出第一行。第二次本來就是真的,非真就是假的空的。就不會輸出顯示。第三次是空。右邊非空。因此是真的就會打印第三行,依次打印出奇數行。而在奇數前加一個非,就會顯示偶數行。

舉例說明:乘除算法

blob.png

你們先把這些上面的弄清楚弄明白吧,我寫的比較多而且相對來講比較簡單了,加些來的一篇博客會寫下半部份內容,由於些博客是嚴謹的,不能隨隨便便寫寫就能夠了,下半部分涉及到函數,內容相對來講比較難,前面這些比較簡單,你們先看下,謝謝。

awk控制語句:if-else的用法

blob.png

awk控制語句while的用法:

條件爲真,進入循壞,條件爲假,退出循壞。

計算1加到100和爲多少

blob.png

awk控制語句for的用法:

blob.png

相關文章
相關標籤/搜索
本站公眾號
   歡迎關注本站公眾號,獲取更多信息