成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

在awk中怎么使用循環

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

[[284446]]

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

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

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

while 循環

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

  1. #!/bin/awk -f
  2.  
  3. BEGIN {
  4. # Loop through 1 to 10
  5.  
  6. i=1;
  7. while (i <= 10) {
  8. print i, " to the second power is ", i*i;
  9. i = i+1;
  10. }
  11. exit;
  12. }

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

do-while 循環

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

  1. #!/usr/bin/awk -f
  2. BEGIN {
  3.  
  4. i=2;
  5. do {
  6. print i, " to the second power is ", i*i;
  7. i = i + 1
  8. }
  9. while (i < 10)
  10.  
  11. exit;
  12. }

for 循環

awk 中有兩種 for 循環。

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

  1. #!/bin/awk -f
  2.  
  3. BEGIN {
  4. for (i=1; i <= 10; i++) {
  5. print i, " to the second power is ", i*i;
  6. }
  7. exit;
  8. }

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

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

用演示文件 colours.txt(前一篇文章中的文件)來舉例:

  1. name       color  amount
  2. apple      red    4
  3. banana     yellow 6
  4. raspberry  red    99
  5. strawberry red    3
  6. grape      purple 10
  7. apple      green  8
  8. plum       purple 2
  9. kiwi       brown  4
  10. potato     brown  9
  11. pineapple  yellow 5

這是 awk 版的簡易 uniq -c

  1. #! /usr/bin/awk -f
  2.  
  3. NR != 1 {
  4.     a[$2]++
  5. }
  6. END {
  7.     for (key in a) {
  8.                 print a[key] " " key
  9.     }
  10. }

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

  1. #! /usr/bin/awk -f
  2.  
  3. BEGIN {
  4.     FS=" ";
  5.     OFS="\t";
  6.     print("color\tsum");
  7. }
  8. NR != 1 {
  9.     a[$2]+=$3;
  10. }
  11. END {
  12.     for (b in a) {
  13.         print b, a[b]
  14.     }
  15. }

你可以看到,在處理文件之前也需要在 BEFORE 函數(僅僅執行一次)中打印一列表頭。

循環

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

責任編輯:龐桂玉 來源: Linux中國
相關推薦

2016-08-29 20:51:16

awkLinux開源

2016-08-10 16:07:08

awkLinux開源

2016-08-11 09:18:33

awkShellLinux

2016-10-08 20:58:50

awkLinux編寫腳本

2016-07-29 15:13:00

awk文本處理工具編程

2019-12-12 18:00:54

awkLinux開源

2022-03-20 10:40:11

Linuxawk 腳本

2017-11-23 09:00:02

Linuxcron計劃任務

2016-08-10 11:19:11

awkLinux開源

2010-05-11 10:29:06

Unix awk

2010-09-08 17:15:45

SQL循環結構

2023-06-12 15:33:52

Scalafor循環語句

2023-06-15 17:00:11

Rust循環

2009-11-25 10:52:22

PHP函數contin

2017-08-04 14:00:32

Linuxawk變量

2010-03-04 15:28:01

Ubuntu Shel

2024-09-11 17:00:36

2019-11-26 14:00:58

awkLinux命令

2021-03-25 09:58:22

鴻蒙HarmonyOS應用開發

2024-11-18 16:03:36

點贊
收藏

51CTO技術棧公眾號

主站蜘蛛池模板: 在线日韩av电影 | 国产电影一区二区三区爱妃记 | 精品一区国产 | 欧美日韩看片 | 欧美a级成人淫片免费看 | 亚洲成人福利在线观看 | 自拍偷拍中文字幕 | 91精品国产91久久久久久最新 | 久久综合欧美 | 少妇黄色 | 亚洲精品视频在线播放 | 狠狠亚洲 | 亚av在线| 2019天天干夜夜操 | 91精品麻豆日日躁夜夜躁 | 国产精品一区二区三区久久 | 日韩免费毛片 | 午夜精品视频 | 国产精品久久一区 | 亚洲色图综合网 | 欧美激情视频一区二区三区在线播放 | 久久高清免费视频 | 黄色成人免费在线观看 | 国产1区2区3区 | 日韩久久久久久 | 久久久久亚洲 | 日韩精品在线网站 | 国产精品美女久久久 | 国产精品视频免费播放 | 亚州av在线 | 亚洲最大av| 国产原创在线观看 | 国内av在线 | 精品麻豆剧传媒av国产九九九 | 欧美精品成人一区二区三区四区 | 久久久av中文字幕 | 中文字字幕在线中文乱码范文 | 在线观看欧美一区 | 欧美日韩久久精品 | 久久成人一区 | 天天成人综合网 |