2015-10-18 99 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\}"Ñ(含)之间的任何匹配出现的次数。

相关问题