AWK 工作流程

2018-08-12 21:30 更新

工作流程

這一章節(jié)中,我們將解釋 AWK 是如何工作的。 要想成為 AWK 專家,你必須得了解其內(nèi)部工作的原理。 AWK 執(zhí)行的流程非常簡單:讀( Read )、執(zhí) 行( Execute )與重復( Repeat )。下面的流程圖描述出了 AWK 的工作流程:

讀(Read)

AWK 從輸入流(文件、管道或者標準輸入)中讀入一行然后將其存入內(nèi)存中。

執(zhí)行(Execute)

對于每一行輸入,所有的 AWK 命令按順執(zhí)行。 默認情況下,AWK 命令是針對于每一行輸入,但是我們可以將其限制在指定的模式中。

重復(Repeate)

一直重復上述兩個過程直到文件結束。

程序的結構

我們已經(jīng)見過 AWK 程序的工作流程。 現(xiàn)在讓我們一起來學習 AWK 程序的結構。

開始塊(BEGIN block)

開始塊的語法格式如下所示:

BEGIN {awk-commands}

顧名思義,開始塊就是在程序啟動的時候執(zhí)行的代碼部分,并且它在整個過程中只執(zhí)行一次。 一般情況下,我們在開始塊中初始化一些變量。BEGIN 是 AWK 的關鍵字,因此它必須是大寫的。 不過,請注意,開始塊部分是可選的,你的程序可以沒有開始塊部分。

主體塊(Body Block)

主體部分的語法要求如下:

/pattern/ {awk-commands}

對于每一個輸入的行都會執(zhí)行一次主體部分的命令。默認情況下,對于輸入的每一行,AWK 都會很執(zhí)行命令。但是,我們可以將其限定在指定的模式中。 注意,在主體塊部分沒有關鍵字存在。

結束塊(END Block)

下面是結束塊的語法格式:

END {awk-commands}

結束塊是在程序結束時執(zhí)行的代碼。 END 也是 AWK 的關鍵字,它也必須大寫。 與開始塊相似,結束塊也是可選的。

示例

先創(chuàng)建一個名為 marks.txt 的文件。其中包括序列號、學生名字、課程名稱與所得分數(shù)。

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

接下來,我們將使用 AWK 腳本來顯示輸出文件中的內(nèi)容,同時輸出表頭信息。

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

執(zhí)行上面的代碼后,將會輸出如下的結果:

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 在開始塊中輸出表頭信息。在主體塊中,AWK 每讀入一行就將讀入的內(nèi)容輸出至標準輸出流中,一直到整個文件被全部讀入為止。

以上內(nèi)容是否對您有幫助:
在線筆記
App下載
App下載

掃描二維碼

下載編程獅App

公眾號
微信公眾號

編程獅公眾號