2015-10-18 34 views
1

我試圖在文本中標識國家縮寫。正則表達式在egrep中工作,但不在sed中

egrep "^[A-Z]{2}$" file 

似乎工作。但是當我在sed上嘗試正則表達式時,它不起作用。這就是我正在使用的

sed 's/^[A-Z]{2}$/someCountry/' file 

我在做什麼錯?

+0

在最後一個'''之前加一個'/'並在第一個'''之後加一個'^'並使用sed的選項'-E'。 – Cyrus

+0

-E似乎是問題所在。謝謝 – Roy

+0

在某些系統上,擴展的正則表達式'sed'標誌在我的系統上是'-r'或'-E','-E'和'-r'存在,但只有'-r'被記錄。 – 2015-10-18 21:49:37

回答

0

man sed並搜索「擴展」。 egrepgrep,在'擴展'正則表達式中有一個標誌(-e),而sed有一個類似的標誌。否則,語法是不同的,你必須更多地使用\

1

POSIX sed使用BREs裏面基本的正則表達式)。在那些,你可以使用相當於{2},但你必須逃生括號egrep支持EREs擴展正則表達式)。作爲擴展BREs的一個副作用,轉義規則是不同的(使得結果表達式更容易編寫)。

參考:

當BRE匹配單個字符,一子表達式,或反向參考後面是格式"\{m\}""\{m,\}",o與該間隔表達式一起,它應匹配重複連續出現的BRE將匹配的內容。的Ñ的值是十進制整數範圍0 <= m<= n<= {RE_DUP_MAX},其中指定發生的正確或最小數目和Ñ指定出現的最大數目。表達"\{m\}"應完全匹配出現前述BRE的,"\{m,\}"應匹配至少m個,並且"\{m,n\}"Ñ(含)之間的任何匹配出現的次數。

相關問題