首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> 更多程式語言 >> 程式設計綜合問答

AWK 與 Bash 正則匹配運算符詳解:~ 與 =~ 的用法差異

     編輯:程式設計綜合問答

AWK:~ 運算符

awk '{for(i=1;i<=NF;i++) if($i ~ /^[0-9]/) print $i}'
  • $i ~ /regex/:字串 $i **匹配** 正則表達式 /regex/,成功回傳真(1)。
  • !~:不匹配。
  • 正則語法為 **POSIX ERE**(擴展正則),支援 (), |, +, ? 等。

Bash:=~ 運算符

[[ "$str" =~ ^[A-Za-z0-9]*$ ]] && echo "匹配"
  • 僅在 [[ ... ]] 條件結構中可用。
  • 右側正則**不加引號**,否則視為字面字串比較。
  • 匹配結果存於 BASH_REMATCH 陣列:${BASH_REMATCH[0]} 為整體匹配,[1] 為第一個捕獲組。
  • 同為 POSIX ERE。

比較表

特性AWK ~Bash =~
使用場景AWK 程式/單行腳本Bash 條件判斷
正則定界/regex/直接寫(無引號)
捕獲組不直接支援(需用 match() 函數)自動填充 BASH_REMATCH
大小寫敏感預設敏感,IGNORECASE=1 忽略預設敏感,shopt -s nocasematch 忽略

記憶口訣

AWK 用波浪號 ~ 匹配正則;Bash 雙中括號裡用 =~。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved