shell文本過濾編程(六):awk之迴圈判斷及數組

來源:互聯網
上載者:User

標籤:blog   使用   for   ar   代碼   html   log   on   new   

【著作權聲明:轉載請保留出處:blog.csdn.net/gentleliu。Mail:shallnew at 163 dot com】

與上一節printf一樣,awk的迴圈判斷和C語言的迴圈判斷文法極其類似。
1、 While迴圈

#!/bin/sh awk 'BEGIN {    ORS=""}{    i=0    while (i < NF) {        printf("* ")        i++    }    print "\n"}' group_file1


首先,將輸出記錄分隔字元 ORS 設定成 ""(空),它將使 print 語句在每個調用結尾不輸出新行。這意味著如果希望任何文本從新的一行開始,那麼需要明確寫入 print "\n"。
在代碼中,設定變數i來儲存當前中處理欄位編號,對每一行記錄,i首先設定為0,然後對每一欄位列印一個“*”,每一行記錄列印完之後列印一個換行,由於將 ORS 設定成 "",print將不輸出2個換行。下面為列印結果:

#./7_awk_while.sh* * * * * * * * * * * * * * * * #


2、 do…while迴圈
awk 還有"do...while" 迴圈,它在代碼塊結尾處對條件求值,而不象標準 while 迴圈那樣在開始處求值。
樣本(輸出六個*號):

#!/bin/sh echo "" | awk '{    i=0    do {        printf("* ")    }while (i++ < 5)    printf("\n")}'

與一般的 while 迴圈不同,由於在代碼塊之後對條件求值,"do...while" 迴圈永遠都至少執行一次。
換句話說,當第一次遇到普通 while 迴圈時,如果條件為假,將永遠不執行該迴圈。
3、 for迴圈
awk 允許建立 for 迴圈,它就象 while 迴圈,也等同於 C 語言的 for 迴圈:
for ( initial assignment; comparison; increment ) { code block}

樣本(同樣連續輸出5個*):
#!/bin/sh echo"" | awk '{    for (i=0; i<5; i++) {        printf("* ")    }    printf("\n")}'

使用過C語言的會發現,Awk的迴圈操作和C語言的迴圈操作文法極其類似。
Awk也支援數組,數組使用前,不必定義,也不必指定數組元素個數。經常使用迴圈來訪問數組。下面是一種迴圈類型的基本結構:
For (element inarray ) print array[element]
樣本:
#!/bin/sh echo"" | awk 'BEGIN {    a[1]="123"    a[2]="456"    a[3]="789"} END{    for(i in a) {        print a[i]    }}'
Awk數組的下標還可以使用字串。awk 將 arr["1"] 和 arr[1] 看作同一個元素。
樣本:
#!/bin/sh echo"" | awk 'BEGIN {    a[1]="123"    a[2]="456"    a[3]="789"    a["hello"]="awk"    a["3"]="world"} {    for(i in a) {        print a[i]    }} END {    print "======end========"    print a[3]    print a["3"]}'

輸出結果為:
awk123456world======end========worldworld

shell文本過濾編程(六):awk之迴圈判斷及數組

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.