
誰能解釋為什麼這不起作用?
grep -ne '[A-Za-z]{1,30}\ [A-Z][a-z]{1,30}\W[A-Za-z]{1,30}\ [0-9]{1,30}\W[0-9]{5}\ [A-Za-z]{1,30}(\ [A-Za-z]{1,30})?' emails
答案1
首先,您使用擴展正規表示式 (ERE) 語法,例如{}
,()
和?
。新增選項-E
以使用 ERE 或進行轉義{}
並()
使用反斜線並取代?
如下:grep -ne '[A-Za-z]\{1,30\} [A-Z][a-z]\{1,30\}\W[A-Za-z]\{1,30\} [0-9]\{1,30\}\W[0-9]\{5\} [A-Za-z]\{1,30\}\( [A-Za-z]\{1,30\}\)\{0,1\}' emails
其次,您在單引號內使用反斜線轉義空格。雖然大多數實作grep
都會將其處理為簡單的空格,但 posix 標準認為這是未定義的:前面有反斜線 ( '\' ) 的普通字元的解釋是未定義的。
可能還有其他問題,但如果不知道您的文件的語法和您想要的內容,我們就無法知道grep