awk使用詳解(shell)

一.基本介紹

1.awk:

  awk是一個強大的文本分析工具,在對文本文件的處理以及生成報表,awk是無可替代的。awk認爲文本文件都是結構化的,它將每一個輸入行定義爲一個記錄,行中的每個字符串定義爲一個域(段),域和域之間使用分割符分割。


2.功能:流控制、數學運算、進程控制、內置的變量和函數、循環和判斷


3.工作原理:

awk 會把每行進行一個拆分,用相應的命令對拆分出來的“段”進行處理。

(1)行工作模式,讀入文件的每一行,會把一行的內容,存到$0裏

(2)使用內置的變量FS(段的分隔符,默認用的是空白字符),分割這一行,把分割出來的每個段存到相應的變量$(1-100)

(3)輸出的時候按照內置變量OFS(out FS),輸出

(4)讀入下一行繼續操作

簡單實例

[root@tx3 ~]# echo "this is a book" > awk.txt

[root@tx3 ~]# awk '{print $2,$1,$3,$4}' awk.txt

is this a book


4.   Awk常用內置變量表:

1 $0             當前記錄(作爲單個變量)  

2 $1~$n          當前記錄的第n個字段,字段間由FS分隔  

3 FS             輸入字段分隔符 默認是空格  

4 NF             當前記錄中的字段個數,就是有多少列  

5 NR             已經讀出的記錄數,就是行號,從1開始  

6 RS             輸入的記錄他隔符默 認爲換行符  

7 OFS            輸出字段分隔符 默認也是空格  

8 ORS            輸出的記錄分隔符,默認爲換行符  

9 ARGC           命令行參數個數  

10 ARGV           命令行參數數組  

11 FILENAME       當前輸入文件的名字  

12 IGNORECASE     如果爲真,則進行忽略大小寫的匹配  

13 ARGIND         當前被處理文件的ARGV標誌符  

14 CONVFMT        數字轉換格式 %.6g  

15 ENVIRON        UNIX環境變量  

16 ERRNO          UNIX系統錯誤消息  

17 FIELDWIDTHS    輸入字段寬度的空白分隔字符串  

18 FNR            當前記錄數  

19 OFMT           數字的輸出格式 %.6g  

20 RSTART         被匹配函數匹配的字符串首  

21 RLENGTH        被匹配函數匹配的字符串長度  

常見參數:

常用命令選項

  • -F fs fs 指定輸入分隔符,fs可以時字符串或正則表達式

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

  • -f scriptfile 從腳本文件中讀取awk命令

例:打印第一行最後一個字段(使用:分割)

[root@tx3 ~]# awk -F: 'NR==1{print $NF}' p1

/bin/bash

awk腳本基本格式

  1. awk 'BEGIN{ commands } pattern{ commands } END{ commands }' file 

一個awk腳本通常由BEGIN, 通用語句塊,END語句塊組成,三部分都是可選的。 腳本通常是被單引號或雙引號包住

awk執行過程分析

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

    BEGIN語句塊:在awk開始從輸入輸出流中讀取行之前執行,在BEGIN語句塊中執行如變量初始化,打印輸出表頭等操作。

  • 第二步:從文件或標準輸入中讀取一行,然後執行pattern{ commands }語句塊。它逐行掃描文件,從第一行到最後一行重複這個過程,直到全部文件都被讀取完畢。

    pattern語句塊:pattern語句塊中的通用命令是最重要的部分,它也是可選的。如果沒有提供pattern語句塊,則默認執行{ print },即打印每一個讀取到的行。{ }類似一個循環體,會對文件中的每一行進行迭代,通常將變量初始化語句放在BEGIN語句塊中,將打印結果等語句放在END語句塊中。

  • 第三步:當讀至輸入流末尾時,執行END { command }語句塊

    END語句塊:在awk從輸入流中讀取完所有的行之後即被執行,比如打印所有行的分析結果這類信息彙總都是在END語句塊中完成,它也是一個可選語句塊。

常用的都在這裏了。其他的比較不常用的循環喝天劍判斷我就不多說了。可以自己百度。

發佈了22 篇原創文章 · 獲贊 8 · 訪問量 3萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章