2017-09-05 64 views
0

我想从grep搜索中删除一个字符串,并且我似乎无法让sed工作,尽管正则表达式看起来是正确的。我也使用OSX,但我安装了gnu-sed以使事情变得更简单。OSX硒正则表达式去除

我希望下面的正则表达式将从删除所有分确定性:

gsed -r 's/minCertainty=\"\d\.\d{1,}\"//g' 

下面是我处理的文本,上下文的例子:

<vendor="company1" minCertainty="1.0"/> 
<vendor="company2" minCertainty="0.75"/> 
<vendor="company3" minCertainty="0.25"/> 

回答

2

在我的机器, gsed似乎不支持\d检测数字 - 至少,当我尝试它时,它不工作。以下正则表达式作品:

gsed -r 's/minCertainty=\"[0-9]\.[0-9]{1,}\"//g'

2

\d为数字是一个perl扩展到standard regex syntax(无论是基本或扩展版本)。 gsed -r使用扩展正则表达式语法,不包括perl扩展名。因此改用[0-9][[:digit:]]。此外,你不需要逃避表达式中的单引号(它似乎没有受到伤害,但我建议不要这样做)。所以使用其中的一种:

gsed -r 's/minCertainty="[0-9]\.[0-9]{1,}"//g' 
gsed -r 's/minCertainty="[[:digit:]]\.[[:digit:]]{1,}"//g'