Awk 入門/運算
外觀
< Awk 入門
Awk 的關係運算符已經討論過了。作為快速提醒,以下是它們:
<小於<=小於或等於>大於>=大於或等於==等於!=不等於~匹配(將字串與正則表示式進行比較)!~不匹配
請注意,與某些語言不同,Awk 中的關係表示式不返回任何值。它們只計算為真條件或假條件。這意味著像這樣的 Awk 程式
BEGIN {a=1; print (a==1)}
它什麼也不列印,嘗試將關係表示式用作算術表示式的一部分會導致錯誤。
為了將關係運算符組合成更復雜的表示式,Awk 提供了三個邏輯(或布林)運算子
&&並且(如果兩邊都為真,則報告“真”)||或者(如果其中一邊或兩邊都為真,則報告“真”)!非(反轉以下表達式的真/假)
Awk 使用標準的四個算術運算子
+加法-減法*乘法/除法^指數運算(**也可能有效)%餘數
所有計算都在浮點中執行。它們以預期的運算順序執行。
存在增量和減量運算子
++增量--減量
這些運算子相對於其操作的變數的位置很重要。如果++在變數之前,則該變數在用於其他操作之前被增量。例如
BEGIN {x=3; print ++x}
這將列印 4。如果++在變數之後,則該變數在用於其他操作之後被增量。例如
BEGIN {x=3; print x++}
這將列印 3,但從那時起x將等於 4。類似的說明適用於--。當然,如果被增量或減量的變數當時沒有參與其他操作,則運算子的位置無關緊要。
Awk 還允許以下修改變數值的簡寫操作
x += 2 x = x + 2
x -= 2 x = x - 2
你明白了。這個快捷方式適用於所有算術運算(+= -= *= /= ^= %=)。
只有一個獨特的字串操作:連線。透過將兩個字串連續放置在同一行上,可以輕鬆地將它們連線起來。它們之間只需要一個空格。例如
BEGIN {string = "Super" "power"; print string}
這將列印
Superpower
即使是變數,也可以將字串連線起來。這會產生與上面相同的結果
BEGIN {a = "Super"; b = "power"; print (a b)}
括號可能不是必需的,但它們通常用於確保連線被正確解釋。
有一個有趣的運算子叫做條件運算子。它有兩個部分。看這個例子
print ( price > 500 ? "too expensive" : "cheap" )
這將根據price的值列印“太貴了”或“便宜”。問號之前的條件將被計算。如果為真,則執行第一個語句,如果為假,則執行第二個語句。語句之間用冒號分隔。