溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

AWK中如何使用循環(huán)

發(fā)布時間:2022-02-19 10:47:46 來源:億速云 閱讀:162 作者:小新 欄目:開發(fā)技術

小編給大家分享一下AWK中如何使用循環(huán),相信大部分人都還不怎么了解,因此分享這篇文章給大家參考一下,希望大家閱讀完這篇文章后大有收獲,下面讓我們一起去了解一下吧!

AWK 是一種處理文本文件的語言,是一個強大的文本分析工具,在處理文本時經(jīng)常使用到循環(huán)。

AWK中如何使用循環(huán)

while 循環(huán)

一個 while 循環(huán)檢測一個表達式,如果表達式為 true 就執(zhí)行命令。當表達式變?yōu)?false 時,循環(huán)中斷。

#!/bin/awk -fBEGIN {
       # 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 -fBEGIN {

       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)初始化一個變量,檢測一個測試表達式,執(zhí)行變量遞增,當表達式的結果為 true 時循環(huán)就會一直執(zhí)行。

#!/bin/awk -fBEGIN {
   for (i=1; i print i, " to the second power is ", i*i;
   }exit;
}

另一種 for 循環(huán)設置一個有連續(xù)索引的數(shù)組變量,對每一個索引執(zhí)行一個命令集。換句話說,它用一個數(shù)組“收集”每一條命令執(zhí)行后的結果。

本例實現(xiàn)了一個簡易版的 Unix 命令 uniq。通過把一系列字符串作為鍵加到數(shù)組 a 中,當相同的鍵再次出現(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 -fNR != 1 {
   a[$2]++
}
END {
   for (key in a) {
               print a[key] " " key
   }
}

示例數(shù)據(jù)文件的第三列是第一列列出的條目的計數(shù)。你可以用一個數(shù)組和 for 循環(huán)來按顏色統(tǒng)計第三列的條目。

#! /usr/bin/awk -fBEGIN {
   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)”這篇文章的所有內容,感謝各位的閱讀!相信大家都有了一定的了解,希望分享的內容對大家有所幫助,如果還想學習更多知識,歡迎關注億速云行業(yè)資訊頻道!

向AI問一下細節(jié)

免責聲明:本站發(fā)布的內容(圖片、視頻和文字)以原創(chuàng)、轉載和分享為主,文章觀點不代表本網(wǎng)站立場,如果涉及侵權請聯(lián)系站長郵箱:is@yisu.com進行舉報,并提供相關證據(jù),一經(jīng)查實,將立刻刪除涉嫌侵權內容。

awk
AI