难以在grep中使用正则表达式

时间:2011-10-15 20:48:05

标签: regex grep

我可能错过了一些非常明显的东西,但我有一个xml文件,我需要grep来查看它是否包含这个:

<phone>null</phone> 要么 的 <phone></phone>

在任何情况下,以及任何额外的空格(在标签之间)。

所以,我的非工作解决方案是:

grep -i "\<phone\>\s*(null)?\s*\</phone\>" ./myfile.xml

但是返回为空(即使我正在使用的文件有此节点)。 我在俯瞰什么?

TIA

2 个答案:

答案 0 :(得分:1)

啊!发现它...我会自己回答,以防其他人发现它在将来有用......添加 -P 开关即......

grep -i -P "\<phone\>\s*(null)?\s*\</phone\>" ./myfile.xml

...调用它使用perl样式正则表达式(这就是我正在使用的)并产生所需的结果。

答案 1 :(得分:0)

kent$  echo "<phone>null</phone> or <phone></phone>foo bar"|grep -iE "(<phone>null</phone>|<phone></phone>)"                             

<phone>null</phone> or <phone></phone>foo bar