跳轉到內容

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的值列印“太貴了”或“便宜”。問號之前的條件將被計算。如果為真,則執行第一個語句,如果為假,則執行第二個語句。語句之間用冒號分隔。

華夏公益教科書