最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

在 awk 中使用循環(huán)

 更新時間:2019年12月03日 14:00:22   作者:Seth Kenlon  
awk 腳本有三個主要部分:BEGIN 和 END 函數(shù)(都可選),用戶自己寫的每次要執(zhí)行的函數(shù)。這篇文章主要介紹了在 awk 中怎么使用循環(huán),需要的朋友可以參考下

來學(xué)習(xí)一下多次執(zhí)行同一條命令的不同類型的循環(huán)。

awk 腳本有三個主要部分:BEGIN 和 END 函數(shù)(都可選),用戶自己寫的每次要執(zhí)行的函數(shù)。某種程度上,awk 的主體部分就是一個循環(huán),因?yà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;
}

在這個簡單實(shí)例中,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,因?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)初始化一個變量,檢測一個測試表達(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é)果。

本例實(shí)現(xiàn)了一個簡易版的 Unix 命令 uniq。通過把一系列字符串作為鍵加到數(shù)組 a 中,當(dāng)相同的鍵再次出現(xiàn)時就增加鍵值,可以得到某個字符串出現(xiàn)的次數(shù)(就像 uniq 的 --count 選項(xiàng))。如果你打印該數(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ù)文件的第三列是第一列列出的條目的計(jì)數(shù)。你可以用一個數(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)

在任何編程語言中循環(huán)都是很重要的一部分,awk 也不例外。使用循環(huán)你可以控制 awk 腳本怎樣去運(yùn)行,它可以統(tǒng)計(jì)什么信息,還有它怎么去處理你的數(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

總結(jié)

以上所述是小編給大家介紹的在 awk 中使用循環(huán),希望對大家有所幫助,如果大家有任何疑問請給我留言,小編會及時回復(fù)大家的。在此也非常感謝大家對腳本之家網(wǎng)站的支持!
如果你覺得本文對你有幫助,歡迎轉(zhuǎn)載,煩請注明出處,謝謝!

相關(guān)文章

  • centos把網(wǎng)卡名稱修改為eth0的方法

    centos把網(wǎng)卡名稱修改為eth0的方法

    本篇文章主要介紹了centos把網(wǎng)卡名稱修改為eth0,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2017-02-02
  • Linux下如何創(chuàng)建SFTP賬號

    Linux下如何創(chuàng)建SFTP賬號

    這篇文章主要介紹了Linux下如何創(chuàng)建SFTP賬號問題,具有很好的參考價(jià)值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教
    2024-06-06
  • Linux如何修改SSH端口號

    Linux如何修改SSH端口號

    這篇文章主要介紹了Linux如何修改SSH端口號問題,具有很好的參考價(jià)值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教
    2023-12-12
  • CentOS 6.4系統(tǒng)下編譯安裝LNMP和配置PHP環(huán)境具體步驟

    CentOS 6.4系統(tǒng)下編譯安裝LNMP和配置PHP環(huán)境具體步驟

    下面介紹的是CentOS 6.4系統(tǒng)下編譯安裝LNMP和配置PHP環(huán)境具體步驟,感興趣的朋友可以參考下,希望對你配置php環(huán)境有所幫助
    2013-05-05
  • apache ab工具頁面壓力測試返回結(jié)果含義解釋

    apache ab工具頁面壓力測試返回結(jié)果含義解釋

    這篇文章主要介紹了apache ab工具頁面壓力測試返回結(jié)果含義解釋,ab工具的使用非常簡單,但返回結(jié)果中的數(shù)據(jù)有點(diǎn)多,看不懂的話就需要看看本文了,需要的朋友可以參考下
    2015-07-07
  • LNMP系列教程之 解決sendmail不能發(fā)送郵件問題

    LNMP系列教程之 解決sendmail不能發(fā)送郵件問題

    客戶需要驗(yàn)證郵件注冊用戶我發(fā)現(xiàn)郵件發(fā)送不了。一般的主機(jī)我用過,直接在dz后臺開啟就可以實(shí)現(xiàn)。查閱相關(guān)資料應(yīng)該是sendmail不能發(fā)送郵件導(dǎo)致的。那我們?nèi)绾谓鉀Q呢
    2012-09-09
  • centos配置ssh免密碼登錄后仍要輸入密碼的解決方法

    centos配置ssh免密碼登錄后仍要輸入密碼的解決方法

    這篇文章主要給大家介紹了關(guān)于centos配置ssh免密碼登錄后仍要輸入密碼的解決方法,需要的朋友可以參考下
    2017-08-08
  • Ubuntu中Opencv的安裝使用教程

    Ubuntu中Opencv的安裝使用教程

    Opencv就不解釋了,是個很有名的圖形庫。下面這篇文章主要介紹了Ubuntu中Opencv安裝使用的相關(guān)資料,文中介紹的非常詳細(xì),需要的朋友們下面來一起看看吧。
    2017-04-04
  • linux mount掛載共享目錄詳解

    linux mount掛載共享目錄詳解

    本篇文章主要介紹了linux mount掛載共享目錄詳解,詳細(xì)的介紹mount命令的使用,具有一定的參考價(jià)值,有興趣的可以了解一下。
    2017-03-03
  • Linux報(bào)錯cannot?open?shared?object?file問題及解決

    Linux報(bào)錯cannot?open?shared?object?file問題及解決

    這篇文章主要介紹了Linux報(bào)錯cannot?open?shared?object?file問題及解決,具有很好的參考價(jià)值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教
    2024-08-08

最新評論

金乡县| 南岸区| 宜黄县| 十堰市| 屯门区| 静海县| 七台河市| 邛崃市| 肥城市| 浦城县| 新野县| 孟津县| 巩义市| 黑龙江省| 屏南县| 徐闻县| 靖安县| 神池县| 开原市| 左贡县| 普宁市| 安吉县| 潞城市| 金沙县| 内黄县| 凉城县| 冷水江市| 安达市| 明星| 南充市| 万全县| 扶沟县| 安国市| 聊城市| 南华县| 梅河口市| 绥德县| 本溪市| 黄冈市| 泸西县| 皮山县|