真实的国产乱ⅩXXX66竹夫人,五月香六月婷婷激情综合,亚洲日本VA一区二区三区,亚洲精品一区二区三区麻豆

成都創(chuàng)新互聯(lián)網(wǎng)站制作重慶分公司

在awk中如何使用循環(huán)-創(chuàng)新互聯(lián)

這篇文章主要介紹在awk中如何使用循環(huán),文中介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們一定要看完!

創(chuàng)新互聯(lián)建站主營(yíng)興寧網(wǎng)站建設(shè)的網(wǎng)絡(luò)公司,主營(yíng)網(wǎng)站建設(shè)方案,app軟件開發(fā),興寧h5重慶小程序開發(fā)搭建,興寧網(wǎng)站營(yíng)銷推廣歡迎興寧等地區(qū)企業(yè)咨詢

awk 腳本有三個(gè)主要部分:BEGIN 和 END 函數(shù)(都可選),用戶自己寫的每次要執(zhí)行的函數(shù)。某種程度上,awk 的主體部分就是一個(gè)循環(huán),因?yàn)楹瘮?shù)中的命令對(duì)每一條記錄都會(huì)執(zhí)行一次。然而,有時(shí)你希望對(duì)于一條記錄執(zhí)行多次命令,那么你就需要用到循環(huán)。

有多種類型的循環(huán),分別適合不同的場(chǎng)景。

while 循環(huán)

一個(gè) while 循環(huán)檢測(cè)一個(gè)表達(dá)式,如果表達(dá)式為 true 就執(zhí)行命令。當(dāng)表達(dá)式變?yōu)?false 時(shí),循環(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;
}

在這個(gè)簡(jiǎn)單實(shí)例中,awk 打印了放在變量 i 中的整數(shù)值的平方。while (i <= 10) 語(yǔ)句告訴 awk 僅在 i 的值小于或等于 10 時(shí)才執(zhí)行循環(huán)。在循環(huán)最后一次執(zhí)行時(shí)(i 的值是 10),循環(huán)終止。

do-while 循環(huán)

do-while 循環(huán)執(zhí)行在關(guān)鍵字 do 之后的命令。在每次循環(huán)結(jié)束時(shí)檢測(cè)一個(gè)測(cè)試表達(dá)式來決定是否終止循環(huán)。僅在測(cè)試表達(dá)式返回 true 時(shí)才會(huì)重復(fù)執(zhí)行命令(即還沒有到終止循環(huán)的條件)。如果測(cè)試表達(dá)式返回 false,因?yàn)榈搅私K止循環(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)初始化一個(gè)變量,檢測(cè)一個(gè)測(cè)試表達(dá)式,執(zhí)行變量遞增,當(dāng)表達(dá)式的結(jié)果為 true 時(shí)循環(huán)就會(huì)一直執(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è)置一個(gè)有連續(xù)索引的數(shù)組變量,對(duì)每一個(gè)索引執(zhí)行一個(gè)命令集。換句話說,它用一個(gè)數(shù)組“收集”每一條命令執(zhí)行后的結(jié)果。

本例實(shí)現(xiàn)了一個(gè)簡(jiǎn)易版的 Unix 命令 uniq。通過把一系列字符串作為鍵加到數(shù)組 a 中,當(dāng)相同的鍵再次出現(xiàn)時(shí)就增加鍵值,可以得到某個(gè)字符串出現(xiàn)的次數(shù)(就像 uniq 的 --count 選項(xiàng))。如果你打印該數(shù)組的所有鍵,將會(huì)得到出現(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 版的簡(jiǎn)易 uniq -c:

#! /usr/bin/awk -f
NR != 1 {
  a[$2]++
}
END {
  for (key in a) {
        print a[key] " " key
  }
}

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

#! /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)

在任何編程語(yǔ)言中循環(huán)都是很重要的一部分,awk 也不例外。使用循環(huán)你可以控制 awk 腳本怎樣去運(yùn)行,它可以統(tǒng)計(jì)什么信息,還有它怎么去處理你的數(shù)據(jù)。我們下一篇文章會(huì)討論 switch、continue 和 next 語(yǔ)句。

ps:awk-for循環(huán)簡(jiǎ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)容對(duì)大家有幫助,更多相關(guān)知識(shí),歡迎關(guān)注創(chuàng)新互聯(lián)行業(yè)資訊頻道!


當(dāng)前文章:在awk中如何使用循環(huán)-創(chuàng)新互聯(lián)
轉(zhuǎn)載來于:http://weahome.cn/article/pheie.html

其他資訊

在線咨詢

微信咨詢

電話咨詢

028-86922220(工作日)

18980820575(7×24)

提交需求

返回頂部