這篇文章主要介紹在awk中如何使用循環(huán),文中介紹的非常詳細(xì),具有一定的參考價值,感興趣的小伙伴們一定要看完!
創(chuàng)新互聯(lián)建站主營興寧網(wǎng)站建設(shè)的網(wǎng)絡(luò)公司,主營網(wǎng)站建設(shè)方案,app軟件開發(fā),興寧h5重慶小程序開發(fā)搭建,興寧網(wǎng)站營銷推廣歡迎興寧等地區(qū)企業(yè)咨詢awk 腳本有三個主要部分:BEGIN 和 END 函數(shù)(都可選),用戶自己寫的每次要執(zhí)行的函數(shù)。某種程度上,awk 的主體部分就是一個循環(huán),因為函數(shù)中的命令對每一條記錄都會執(zhí)行一次。然而,有時你希望對于一條記錄執(zhí)行多次命令,那么你就需要用到循環(huán)。
有多種類型的循環(huán),分別適合不同的場景。
while 循環(huán)
一個 while 循環(huán)檢測一個表達(dá)式,如果表達(dá)式為 true 就執(zhí)行命令。當(dāng)表達(dá)式變?yōu)?false 時,循環(huán)中斷。
#!/bin/awk -f BEGIN { # Loop through 1 to 10 i=1; while (i <= 10) { print i, " to the second power is ", i*i; i = i+1; } exit; }
在這個簡單實例中,awk 打印了放在變量 i 中的整數(shù)值的平方。while (i <= 10) 語句告訴 awk 僅在 i 的值小于或等于 10 時才執(zhí)行循環(huán)。在循環(huán)最后一次執(zhí)行時(i 的值是 10),循環(huán)終止。
do-while 循環(huán)
do-while 循環(huán)執(zhí)行在關(guān)鍵字 do 之后的命令。在每次循環(huán)結(jié)束時檢測一個測試表達(dá)式來決定是否終止循環(huán)。僅在測試表達(dá)式返回 true 時才會重復(fù)執(zhí)行命令(即還沒有到終止循環(huán)的條件)。如果測試表達(dá)式返回 false,因為到了終止循環(huán)的條件所以循環(huán)被終止。
#!/usr/bin/awk -f BEGIN { i=2; do { print i, " to the second power is ", i*i; i = i + 1 } while (i < 10) exit; }
for 循環(huán)
awk 中有兩種 for 循環(huán)。
一種 for 循環(huán)初始化一個變量,檢測一個測試表達(dá)式,執(zhí)行變量遞增,當(dāng)表達(dá)式的結(jié)果為 true 時循環(huán)就會一直執(zhí)行。
#!/bin/awk -f BEGIN { for (i=1; i <= 10; i++) { print i, " to the second power is ", i*i; } exit; }
另一種 for 循環(huán)設(shè)置一個有連續(xù)索引的數(shù)組變量,對每一個索引執(zhí)行一個命令集。換句話說,它用一個數(shù)組“收集”每一條命令執(zhí)行后的結(jié)果。
本例實現(xiàn)了一個簡易版的 Unix 命令 uniq。通過把一系列字符串作為鍵加到數(shù)組 a 中,當(dāng)相同的鍵再次出現(xiàn)時就增加鍵值,可以得到某個字符串出現(xiàn)的次數(shù)(就像 uniq 的 --count 選項)。如果你打印該數(shù)組的所有鍵,將會得到出現(xiàn)過的所有字符串。
用演示文件 colours.txt(前一篇文章中的文件)來舉例:
name color amount
apple red 4
banana yellow 6
raspberry red 99
strawberry red 3
grape purple 10
apple green 8
plum purple 2
kiwi brown 4
potato brown 9
pineapple yellow 5
這是 awk 版的簡易 uniq -c:
#! /usr/bin/awk -f NR != 1 { a[$2]++ } END { for (key in a) { print a[key] " " key } }
示例數(shù)據(jù)文件的第三列是第一列列出的條目的計數(shù)。你可以用一個數(shù)組和 for 循環(huán)來按顏色統(tǒng)計第三列的條目。
#! /usr/bin/awk -f BEGIN { FS=" "; OFS="\t"; print("color\tsum"); } NR != 1 { a[$2]+=$3; } END { for (b in a) { print b, a[b] } }
你可以看到,在處理文件之前也需要在 BEFORE 函數(shù)(僅僅執(zhí)行一次)中打印一列表頭。
循環(huán)
在任何編程語言中循環(huán)都是很重要的一部分,awk 也不例外。使用循環(huán)你可以控制 awk 腳本怎樣去運行,它可以統(tǒng)計什么信息,還有它怎么去處理你的數(shù)據(jù)。我們下一篇文章會討論 switch、continue 和 next 語句。
ps:awk-for循環(huán)簡單用法
文本:
[root@VM_0_84_centos ~]# cat sshd.txt 1 2 3 4 5 6 7 8 9
循環(huán)打印上述文本
for 循環(huán)的固定格式 i=1設(shè)置i的初始變量 i<=NF i變量小于等于 NF變量的值(每行的字段數(shù)) i++ 表示i遞增+1,
[root@VM_0_84_centos ~]# cat sshd.txt |awk '{for(i=1;i<=NF;i++){print $i}}' 1 2 3 4 5 6 7 8 9
以上是“在awk中如何使用循環(huán)”這篇文章的所有內(nèi)容,感謝各位的閱讀!希望分享的內(nèi)容對大家有幫助,更多相關(guān)知識,歡迎關(guān)注創(chuàng)新互聯(lián)行業(yè)資訊頻道!
名稱欄目:在awk中如何使用循環(huán)-創(chuàng)新互聯(lián)
URL標(biāo)題:http://muchs.cn/article4/pheie.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供企業(yè)建站、網(wǎng)站導(dǎo)航、網(wǎng)站內(nèi)鏈、外貿(mào)網(wǎng)站建設(shè)、品牌網(wǎng)站建設(shè)、網(wǎng)站策劃
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時需注明來源: 創(chuàng)新互聯(lián)
猜你還喜歡下面的內(nèi)容