婷婷综合国产,91蜜桃婷婷狠狠久久综合9色 ,九九九九九精品,国产综合av

主頁 > 知識庫 > 在 awk 中使用循環

在 awk 中使用循環

熱門標簽:400電話申請知乎 外呼系統虛擬號碼 大連電銷外呼系統運營商 泰州智能外呼系統排名 長春電銷外呼系統代理商 400電話干嘛怎么申請信用卡 代理外呼系統創業 接電話機器人罵人 百度地圖標注尺寸無法顯示

來學習一下多次執行同一條命令的不同類型的循環。

awk 腳本有三個主要部分:BEGIN 和 END 函數(都可選),用戶自己寫的每次要執行的函數。某種程度上,awk 的主體部分就是一個循環,因為函數中的命令對每一條記錄都會執行一次。然而,有時你希望對于一條記錄執行多次命令,那么你就需要用到循環。

有多種類型的循環,分別適合不同的場景。

while 循環

一個 while 循環檢測一個表達式,如果表達式為 true 就執行命令。當表達式變為 false 時,循環中斷。

#!/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 中的整數值的平方。while (i <= 10) 語句告訴 awk 僅在 i 的值小于或等于 10 時才執行循環。在循環最后一次執行時(i 的值是 10),循環終止。

do-while 循環

do-while 循環執行在關鍵字 do 之后的命令。在每次循環結束時檢測一個測試表達式來決定是否終止循環。僅在測試表達式返回 true 時才會重復執行命令(即還沒有到終止循環的條件)。如果測試表達式返回 false,因為到了終止循環的條件所以循環被終止。

#!/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 循環

awk 中有兩種 for 循環。

一種 for 循環初始化一個變量,檢測一個測試表達式,執行變量遞增,當表達式的結果為 true 時循環就會一直執行。

#!/bin/awk -f
BEGIN {
  for (i=1; i <= 10; i++) {
    print i, " to the second power is ", i*i;
  }
exit;
}

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

本例實現了一個簡易版的 Unix 命令 uniq。通過把一系列字符串作為鍵加到數組 a 中,當相同的鍵再次出現時就增加鍵值,可以得到某個字符串出現的次數(就像 uniq 的 --count 選項)。如果你打印該數組的所有鍵,將會得到出現過的所有字符串。

用演示文件 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
  }
}

示例數據文件的第三列是第一列列出的條目的計數。你可以用一個數組和 for 循環來按顏色統計第三列的條目。

#! /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 函數(僅僅執行一次)中打印一列表頭。

循環

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

ps:awk-for循環簡單用法

文本:

[root@VM_0_84_centos ~]# cat sshd.txt
1 2 3
4 5 6
7 8 9

循環打印上述文本

for 循環的固定格式   i=1設置i的初始變量  i<=NF i變量小于等于 NF變量的值(每行的字段數) 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 中使用循環,希望對大家有所幫助,如果大家有任何疑問請給我留言,小編會及時回復大家的。在此也非常感謝大家對腳本之家網站的支持!
如果你覺得本文對你有幫助,歡迎轉載,煩請注明出處,謝謝!

標簽:清遠 大慶 中衛 興安盟 臺灣 安陽 長治 雅安

巨人網絡通訊聲明:本文標題《在 awk 中使用循環》,本文關鍵詞  在,awk,中,使用,循環,在,;如發現本文內容存在版權問題,煩請提供相關信息告之我們,我們將及時溝通與處理。本站內容系統采集于網絡,涉及言論、版權與本站無關。
  • 相關文章
  • 下面列出與本文章《在 awk 中使用循環》相關的同類信息!
  • 本頁收集關于在 awk 中使用循環的相關信息資訊供網民參考!
  • 推薦文章
    主站蜘蛛池模板: 江安县| 延长县| 临江市| 芦溪县| 张家口市| 柘城县| 茶陵县| 巧家县| 安仁县| 芜湖市| 邯郸县| 武宣县| 菏泽市| 探索| 涪陵区| 墨玉县| 廉江市| 游戏| 新乡市| 孝义市| 巴塘县| 长沙市| 霸州市| 张家川| 同仁县| 翁源县| 宾阳县| 济源市| 连城县| 镇安县| 汝南县| 台江县| 宁波市| 长沙市| 常德市| 大足县| 新化县| 揭东县| 宾川县| 溧水县| 姜堰市|