AWK - 工作流程



要成為一名專業的 AWK 程式設計師,你需要了解其內部機制。AWK遵循一個簡單的流程:讀取、執行和重複。下圖描述了 AWK 的工作流程:

AWK Workflow

讀取

AWK 從輸入流(檔案、管道或標準輸入)讀取一行並將其儲存在記憶體中。

執行

所有 AWK 命令都按順序應用於輸入。預設情況下,AWK 對每一行執行命令。我們可以透過提供模式來限制這一點。

重複

此過程重複,直到檔案到達末尾。

程式結構

現在讓我們瞭解 AWK 的程式結構。

BEGIN 塊

BEGIN 塊的語法如下:

語法

BEGIN {awk-commands}

BEGIN 塊在程式啟動時執行。它只執行一次。這是初始化變數的好地方。BEGIN 是 AWK 關鍵字,因此必須大寫。請注意,此塊是可選的。

主體塊

主體塊的語法如下:

語法

/pattern/ {awk-commands}

主體塊將 AWK 命令應用於每一行輸入。預設情況下,AWK 對每一行執行命令。我們可以透過提供模式來限制這一點。請注意,主體塊沒有關鍵字。

END 塊

END 塊的語法如下:

語法

END {awk-commands}

END 塊在程式結束時執行。END 是 AWK 關鍵字,因此必須大寫。請注意,此塊是可選的。

讓我們建立一個名為 marks.txt 的檔案,其中包含學生的序號、姓名、科目名稱和獲得的分數。

1)  Amit    Physics  80
2)  Rahul   Maths    90
3)  Shyam   Biology  87
4)  Kedar   English  85
5)  Hari    History  89

現在讓我們使用 AWK 指令碼顯示帶有標題的檔案內容。

示例

[jerry]$ awk 'BEGIN{printf "Sr No\tName\tSub\tMarks\n"} {print}' marks.txt

執行此程式碼時,將產生以下結果:

輸出

Sr No Name Sub Marks
1) Amit Physics 80
2) Rahul Maths 90
3) Shyam Biology 87
4) Kedar English 85
5) Hari History 89

一開始,AWK 從 BEGIN 塊列印標題。然後在主體塊中,它從檔案中讀取一行並執行 AWK 的 print 命令,該命令只是將內容列印到標準輸出流。此過程重複,直到檔案到達末尾。

廣告