本篇文章我們主要為大家介紹 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 語言...