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 型別動態自適應,但隱性轉換常導致邏輯錯誤。掌握顯式轉換與連接規則,能寫出更穩健的程式。

字串 → 數字:算術運算強制轉型

awk 'BEGIN{a="100"; b="10test10"; print a+b+0}'   # 110
  • +0 或參與任何算術運算 (+ - * / %) 即觸發轉換
  • 純數字字串 → 對應數值
  • 混合字串 ("10test") → 讀取前導數字 (10),遇非數字停止
  • 非數字開頭 ("test") → 0

數字 → 字串:空字串連接

awk 'BEGIN{a=100; b=100; c=a""b; print c}'   # 100100
  • 數字 "" 數字 或 數字 "" 字串 產生字串連接
  • sprintf("%d", num) 格式化轉字串 (可控制進位、補零)

字串連接:空格 vs 空字串

awk 'BEGIN{a="a"; b="b"; print a b}'    # ab (空字串連接)
awk 'BEGIN{a="a"; b="b"; print a" "b}'  # a b (含空格)
awk 'BEGIN{a="a"; b="b"; print a+b}'    # 0 (算術運算,字串轉 0)
運算子行為結果型別
"" (空字串)字串連接字串
空格字串連接 (語法糖)字串
+算術加法 (強制轉數字)數字

實用模式

安全字串轉整數

function to_int(str) { return (str ~ /^[0-9]+$/) ? str+0 : 0 }

安全字串轉浮點數

function to_float(str) { return (str ~ /^[0-9.]+$/) ? str+0 : 0.0 }

數字格式化輸出

awk 'BEGIN{pi=3.1415926; print sprintf("%.2f", pi)}'  # 3.14
awk 'BEGIN{num=42; print sprintf("%05d", num)}'       # 00042

陷阱提醒

awk 'BEGIN{a="100"; b="200"; print a>b}'   # 字串比較:"100" > "200" → true (1)
awk 'BEGIN{a=100; b=200; print a>b}'       # 數字比較:100 > 200 → false (0)

鐵律:比較運算子 (> < >= <= == !=) 若雙操作數皆為數字則數值比較,否則字串比較 (ASCII 碼序)。必要時用 +0 強制轉型。

Copyright © Windows教程網 All Rights Reserved