Windows XP Windows 7 Windows 2003 Windows Vista Windows 綜合教學 Linux 系統教學
Windows 10 Windows 8 Windows 2008 Windows NT Windows Server 電腦軟體教學
您现在的位置: Windows教程網 >> Windows教程 >  >> Linux 系統教學 >> Linux 教學

awk 運算符完整分類:算術、賦值、關係、邏輯、正則與特殊運算符詳解

編輯:Linux 教學

awk 擁有豐富運算符體系,語法風格與 C 語言高度一致。本文分類整理並附實測範例,助你精準掌握優先級與型別轉換規則。

運算符分類總表

類別運算符說明
賦值= += -= *= /= %= ^= **=複合賦值,a+=5 等同 a=a+5
邏輯|| &&短路求值,0 1 對應 false true
正則~ !~匹配/不匹配正則,~ 優先級低於關係運算符
關係< <= > >= != ==數字比較數字,字串比較字串(ASCII序),混合型別自動轉字串
算術+ - * / %加減乘除取模,操作數自動轉數字(非數字變 0)
^ **冪運算,2^3=8
++ --前綴/後綴遞增減,++a 先增後用
其他$欄位引用 $1 $NF
空格字串連接 a b 等同 a""b
?:三元條件 cond?val1:val2
in陣列鍵值存在性 "key" in arr

關鍵行為實測

型別自動轉換

awk 'BEGIN{a="b"; print a++, ++a}'   # 輸出: 0 2 (字串轉 0 再運算)
awk 'BEGIN{a="100"; b="10test"; print a+b+0}'  # 輸出: 110 (遇非數字停止)

字串 vs 數字比較

awk 'BEGIN{a="11"; if(a >= 9) print "ok"}'   # 字串比較: "11" < "9" → false
awk 'BEGIN{a=11; if(a >= 9) print "ok"}'     # 數字比較: 11 >= 9 → true

規則:雙操作數皆為數字 → 數字比較,否則 → 字串比較(ASCII 碼序)。

邏輯短路

awk 'BEGIN{a=1;b=2; print (a>5 && b<=2), (a>5 || b<=2)}'
# 輸出: 0 1 (&& 短路,|| 第二運算元求值)

正則運算符

awk 'BEGIN{a="100testa"; if(a ~ /^100*/) print "ok"}'  # ^100* 匹配 100 開頭

三元運算符

awk 'BEGIN{a="b"; print (a=="b"?"ok":"err")}'  # 輸出: ok

in 運算符 (陣列鍵檢查)

awk 'BEGIN{arr[0]="b"; arr["b"]="c"; print ("b" in arr)}'  # 1 (鍵 "b" 存在)
awk 'BEGIN{arr[0]="b"; print (0 in arr)}'                  # 1 (鍵 0 存在)
awk 'BEGIN{arr[0]="b"; print ("c" in arr)}'                # 0 (鍵 "c" 不存在)

優先級速記 (高→低)

  1. ++ -- (前綴/後綴)
  2. ^ **
  3. + - ! (一元)
  4. * / %
  5. + - (二元)
  6. 空格 (字串連接)
  7. < <= > >= != == ~ !~
  8. &&
  9. ||
  10. ?:
  11. = += -= ... (賦值,右結合)

善用括號明確優先級,避免隱性型別轉換導致邏輯錯誤,是撰寫健壯 awk 程式的關鍵。

Copyright © Windows教程網 All Rights Reserved