awk條件陳述式,awk語句

來源:互聯網
上載者:User

awk條件陳述式,awk語句

條件陳述式用於在執行操作之前做一個測試。在前面的章節中,我們看到了模式比對規則的一些樣本。模式比對規則本質上就是影響輸入迴圈的條件運算式。在這一部分,我們主要就在action中所使用的條件陳述式進行探討。條件陳述式以if開頭,並計算放在圓括弧中的運算式。文法是:

if (expression)
action1
[else
action2]

如果條件運算式expression的值為真(非零或非空),就執行action1 。當存在else語句時,如果條件運算式的值為假(零或空) ,則執行action2。一個條件運算式可能包含算術運算子、關係操作符、或布爾操作符,這些都在awk指令碼中討論過。也許最簡單的條件運算式是測試一個變數是否非零。

if (x) print x

如果x是零, print語句將不執行。如果x是一個非零值,將列印x的值。也可以測試x是否等於另一個值:

if ( x == y ) print x

注意, "=="是關係操作符而"="是賦值操作符。我們還可以用模式比對操作符"~"來測試x是否與一個模式比對:

if ( x ~ /[yY](es)?/ ) print x

以下是幾個補充的文法要點。如果操作時由多個語句組成的,要用一對大括弧將操作括起來。

if (expression)
  statement1
  statement2
}

awk對大括弧和語句的位置沒有特殊的要求(和sed不同)。左大括弧放在條件運算式後面,可以與條件運算式位於一行也可以在下一行。第一條語句可以緊跟左大括弧或從下一行開始,右大括弧放在最好一條語句的後面,可以與最後一條語句位於同一行也可以在下一行。在大括弧的前後允許有空格或定位字元。雖然沒有要求語句縮排書寫,但這樣可以改善可讀性。

右大括弧和else後面的分行符號是可選的。

if ( expression) action1
[else action2]

如果在action1後面加一個分號表示結束, action1後面的換行也是可選的。

if ( expression) action1; [else action2]

如果在同一行上用分號分隔多個語句,同樣需要使用大括弧。

在前面的文章中,我們曾看見過一段指令碼用於計算學生平均成績。我們可以用一個條件來判斷某個學生是否及格。

if ( avg >= 65 )
    grade = "Pass"
else
    grade = "Fail"

賦給grade的值取決於運算式"avg >=65" 的計算結果是真還是假。

可以用多個條件陳述式來測試多個條件中的某個是否為真。例如,也許學生的成績要用字母分級表示,而不是用及格或不及格來表示。以下用一個條件結構根據學生的平均分來指定一個字母成績:

if (avg >= 90) grade = "A"
else if (avg >= 80) grade = "B"
else if (avg >= 70) grade = "C"
else if (avg >= 60) grade = "D"
else grade = "F"

應該注意到的一個重要事情是,這種連續條件只有當一個條件運算式計算結果為真時才停止求值,這時將跳過其他的條件。如果沒有一個條件運算式的計算結果為真,將執行最後的else部分,運行預設操作,在這種情況下為grade賦值"F" 。

參考資料:http://www.linuxawk.com/communication/543.html

著作權聲明:本文為博主原創文章,未經博主允許不得轉載。

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在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.