Linux AWK工作原理

2022-07-09 13:12:09 字數 1652 閱讀 5666

本篇文章我們主要為大家介紹 awk 是如何工作的。

awk 工作流程可分為三個部分:

1.讀輸入檔案之前執行的**段(由begin關鍵字標識)。

2.主迴圈執行輸入檔案的**段。

3. 讀輸入檔案之後的**段(由end關鍵字標識)。

命令結構:

awk 'begin pattern end'

下面的流程圖描述出了 awk 的工作流程:

1、通過關鍵字 begin 執行 begin 塊的內容,即 begin 後花括號 {} 的內容。

2、完成 begin 塊的執行,開始執行body塊。

3、讀入有 \n 換行符分割的記錄。

4、將記錄按指定的域分隔符劃分域,填充域,$0 則表示所有域(即一行內容),$1 表示第乙個域,$n 表示第 n 個域。

5、依次執行各 body 塊,pattern 部分匹配該行內容成功後,才會執行 awk-commands 的內容。

6、迴圈讀取並執行各行直到檔案結束,完成body塊執行。

7、開始 end 塊執行,end 塊可以輸出最終結果。

(1)開始塊(begin)

開始塊的語法格式如下:

begin

開始塊就是在程式啟動的時候執行的**部分,並且它在整個過程中只執行一次。

一般情況下,我們可以在開始塊中初始化一些變數。

begin 是 awk 的關鍵字,因此它必須是大寫的。

注意:開始塊部分是可選的,你的程式可以沒有開始塊部分。

(2)主體塊(body)

主體部分的語法格式如下:

/pattern/

對於每乙個輸入的行都會執行一次主體部分的命令。

預設情況下,對於輸入的每一行,awk 都會執行命令。但是,我們可以將其限定在指定的模式中。

注意:在主體塊部分沒有關鍵字存在。

(3)結束塊(end)

結束塊的語法格式如下:

end

結束塊是在程式結束時執行的**。end 也是 awk 的關鍵字,它也必須大寫。 與開始塊相似,結束塊也是可選的。

例項先建立乙個名為 marks.txt 的檔案。其中包括序列號、學生名字、課程名稱與所得分數。

1) 張三 語文 80

2) 李四 數學 90

3) 王五 英語 87

接下來,我們將使用 awk 指令碼來顯示輸出檔案中的內容,同時輸出表頭資訊。

$ awk 'begin ' marks.txt

執行以上命令,輸出結果如下:

序號    名字    課程    分數

1) 張三 語文 80                 

2) 李四 數學 90                 

3) 王五 英語 87                 

程式開始執行時,awk 在開始塊中輸出表頭資訊。在主體塊中,awk 每讀入一行就將讀入的內容輸出至標準輸出流中,一直到整個檔案被全部讀入為止。

Linux awk命令詳解

3.awk的執行過程 1 awk script的組成 awk script可以由一條或多條awk cmd組成,兩條awk cmd之間一般以newline分隔 awk cmd由兩部分組成 awk pattern awk script可以被分成多行書寫,必須確保整個awk script被單引號括起來。2...

linux awk命令學習

awk是一種功能很強大的程式語言,用於linux系統下文字和資料的處理。本篇文章只學習一些awk相關的常規應用,而不對awk的語法進行討論,如果有需要,直接查資料就好了。1.檢視特定程序的pid,sh ps pid tty time cmd 414 00 00 00 rcs 417 00 00 00...

linux awk命令詳解

awk 儘管操作可能會很複雜,但語法總是這樣,其中 pattern 表示 awk 在資料中查詢的內容,而 action 是在找到匹配內容時所執行的一系列命令。花括號 不需要在程式中始終出現,但它們用於根據特定的模式對一系列指令進行分組。pattern就是要表示的正規表示式,用斜槓括起來。awk 語言...