新聞中心
AWK 是一種處理文本文件的語言,是一個強大的文本分析工具,在處理文本時經(jīng)常使用到循環(huán),本篇文章就為大家講解一下AWK中的循環(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 print i, " to the second power is ", i*i;
i = i+1;
}
exit;
}
在這個簡單實例中,awk 打印了放在變量 i 中的整數(shù)值的平方。while (i
#!/usr/bin/awk -f
BEGIN {
i=2;
do {
print i, " to the second power is ", i*i;
i = i + 1
}
while (i 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 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 語句。
分享題目:AWK中的循環(huán)使用方法
本文地址:http://m.5511xx.com/article/dpsdjhd.html


咨詢
建站咨詢
