Awk

awk (mawk):正則表達式編譯失敗(缺少操作數)

  • June 5, 2018

我想將以下正則表達式與 awk 一起使用來驗證電話號碼:

echo 012-3456-7890 | awk '/^\(?0[1-9]{2}\)?(| |-|.)[1-9][0-9]{3}( |-|.)[0-9]{4}$/ {print $0}'

但我收到以下錯誤:

awk: line 1: regular expression compile failed (missing operand)

由於此處使用的範圍是固定長度的,因此您可以簡單地寫出整個範圍[0-9]{3}=> [0-9][0-9][0-9]。而不是(| |-|.), ( |-|.)?- 雖然我很困惑:.除了空格和之外,您是否允許任何字元()-?那麼它可能只是.?因為空間並且無論如何-都匹配。.如果您匹配文字 period .,那麼您應該[- .]?改用(前導-是為了避免解釋為字元範圍)。所以:

^\(?0[1-9]{2}\)?(| |-|.)[1-9][0-9]{3}( |-|.)[0-9]{4}$

變成:

^\(?0[1-9][1-9]\)?[- .]?[1-9][0-9][0-9][0-9][- .][0-9][0-9][0-9][0-9]$

引用自:https://unix.stackexchange.com/questions/447905