国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 網站 > 幫助中心 > 正文

在 awk 中使用循環

2024-07-09 22:42:12
字體:
來源:轉載
供稿:網友

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

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

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

while 循環

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

#!/bin/awk -fBEGIN {    # 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 -fBEGIN {    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 -fBEGIN {  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 -fNR != 1 {  a[$2]++}END {  for (key in a) {        print a[key] " " key  }}

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

#! /usr/bin/awk -fBEGIN {  FS=" ";  OFS="/t";  print("color/tsum");}NR != 1 {  a[$2]+=$3;}END {  for (b in a) {    print b, a[b]  }}
發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 旺苍县| 东乌| 隆尧县| 阿合奇县| 虹口区| 莱芜市| 昭平县| 光泽县| 高陵县| 洛扎县| 兰坪| 无锡市| 黎川县| 宜良县| 昭觉县| 长宁县| 辉县市| 巢湖市| 包头市| 崇礼县| 洛阳市| 鹿邑县| 定州市| 喀喇沁旗| 讷河市| 信阳市| 璧山县| 吴江市| 安庆市| 安国市| 长海县| 沁阳市| 漳州市| 鲁山县| 乌拉特前旗| 洮南市| 桂东县| 岫岩| 米泉市| 南通市| 盐山县|