solaris上的sed正则表达式失败

时间:2014-05-07 12:40:49

标签: regex sed posix solaris

在Solaris 5.10下,为什么此正则表达式不匹配像tag =" 12447"

这样的行
 sed  "s/tag=\"[0-9]+\"/emptytag/" test.xml

(我注意到-r未在sed版本中实现)

1 个答案:

答案 0 :(得分:2)

在严格的posix模式下,+符号不能用于表示"一个或多个"东西。您可以使用{1,}范围代替(当然是转义):

echo 'tag="12447"' | sed --posix "s/tag=\"[0-9]\{1,\}\"/emptytag/"
emptytag

请注意,您实际上并不需要--posix,我只是用它来禁用我的sed版本中的所有GNU扩展程序:

echo 'tag="12447"' | sed "s/tag=\"[0-9]\{1,\}\"/emptytag/"
emptytag