這期內(nèi)容當(dāng)中小編將會(huì)給大家?guī)碛嘘P(guān)AWK的工作原理是什么,文章內(nèi)容豐富且以專業(yè)的角度為大家分析和敘述,閱讀完這篇文章希望大家可以有所收獲。
專注于為中小企業(yè)提供成都做網(wǎng)站、網(wǎng)站制作服務(wù),電腦端+手機(jī)端+微信端的三站合一,更高效的管理,為中小企業(yè)路北免費(fèi)做網(wǎng)站提供優(yōu)質(zhì)的服務(wù)。我們立足成都,凝聚了一批互聯(lián)網(wǎng)行業(yè)人才,有力地推動(dòng)了上千家企業(yè)的穩(wěn)健成長,幫助中小企業(yè)通過網(wǎng)站建設(shè)實(shí)現(xiàn)規(guī)模擴(kuò)充和轉(zhuǎn)變。讀輸入文件之前執(zhí)行的代碼段(由BEGIN關(guān)鍵字標(biāo)識)。
讀輸入文件之后的代碼段(由END關(guān)鍵字標(biāo)識)。
awk'BEGIN{commands}pattern{commands}END{commands}'
1、通過關(guān)鍵字BEGIN執(zhí)行BEGIN塊的內(nèi)容,即BEGIN后花括號{}的內(nèi)容。
2、完成BEGIN塊的執(zhí)行,開始執(zhí)行body塊。
3、讀入有\(zhòng)n換行符分割的記錄。
4、將記錄按指定的域分隔符劃分域,填充域,$0則表示所有域(即一行內(nèi)容),$1表示第一個(gè)域,$n表示第n個(gè)域。
5、依次執(zhí)行各BODY塊,pattern部分匹配該行內(nèi)容成功后,才會(huì)執(zhí)行awk-commands的內(nèi)容。
6、循環(huán)讀取并執(zhí)行各行直到文件結(jié)束,完成body塊執(zhí)行。
7、開始END塊執(zhí)行,END塊可以輸出最終結(jié)果。
開始塊(BEGIN)
BEGIN{awk-commands}
開始塊就是在程序啟動(dòng)的時(shí)候執(zhí)行的代碼部分,并且它在整個(gè)過程中只執(zhí)行一次。
一般情況下,我們可以在開始塊中初始化一些變量。
BEGIN是AWK的關(guān)鍵字,因此它必須是大寫的。
注意:開始塊部分是可選的,你的程序可以沒有開始塊部分。
主體塊(BODY)
主體部分的語法格式如下:
/pattern/{awk-commands}
對于每一個(gè)輸入的行都會(huì)執(zhí)行一次主體部分的命令。
默認(rèn)情況下,對于輸入的每一行,AWK都會(huì)執(zhí)行命令。但是,我們可以將其限定在指定的模式中。
注意:在主體塊部分沒有關(guān)鍵字存在。
結(jié)束塊(END)
結(jié)束塊的語法格式如下:
END{awk-commands}
結(jié)束塊是在程序結(jié)束時(shí)執(zhí)行的代碼。END也是AWK的關(guān)鍵字,它也必須大寫。與開始塊相似,結(jié)束塊也是可選的。
實(shí)例
先創(chuàng)建一個(gè)名為marks.txt的文件。其中包括序列號、學(xué)生名字、課程名稱與所得分?jǐn)?shù)。
1)張三語文80
2)李四數(shù)學(xué)90
3)王五英語87
接下來,我們將使用AWK腳本來顯示輸出文件中的內(nèi)容,同時(shí)輸出表頭信息。
$awk'BEGIN{printf"序號\t名字\t課程\t分?jǐn)?shù)\n"}{print}'marks.txt
執(zhí)行以上命令,輸出結(jié)果如下:
序號名字課程分?jǐn)?shù)
1)張三語文80
2)李四數(shù)學(xué)90
3)王五英語87
程序開始執(zhí)行時(shí),AWK在開始塊中輸出表頭信息。在主體塊中,AWK每讀入一行就將讀入的內(nèi)容輸出至標(biāo)準(zhǔn)輸出流中,一直到整個(gè)文件被全部讀入為止。
上述就是小編為大家分享的AWK的工作原理是什么了,如果剛好有類似的疑惑,不妨參照上述分析進(jìn)行理解。如果想知道更多相關(guān)知識,歡迎關(guān)注創(chuàng)新互聯(lián)行業(yè)資訊頻道。