我可能失去了一些东西真的很明显使用正则表达式,但我有我需要到grep,看它是否包含此XML文件:有困难的grep中
<phone>null</phone>
或 <phone></phone>
在任何情况下,以及任何额外的空间(标签之间)。
所以,我不工作的解决方案是这样的:
grep -i "\<phone\>\s*(null)?\s*\</phone\>" ./myfile.xml
但是返回空(即使我使用的文件具有此节点)。 我能忽略什么?
TIA
我可能失去了一些东西真的很明显使用正则表达式,但我有我需要到grep,看它是否包含此XML文件:有困难的grep中
<phone>null</phone>
或 <phone></phone>
在任何情况下,以及任何额外的空间(标签之间)。
所以,我不工作的解决方案是这样的:
grep -i "\<phone\>\s*(null)?\s*\</phone\>" ./myfile.xml
但是返回空(即使我使用的文件具有此节点)。 我能忽略什么?
TIA
啊!发现它...我会回答它自己万一别人发现它在未来...添加-P开关即有用...
grep -i -P "\<phone\>\s*(null)?\s*\</phone\>" ./myfile.xml
...的号召使它使用Perl风格的正则表达式(这是我正在使用)并产生所需的结果。
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
肯特,我明白了,谢谢......但是您的解决方案不使用正则表达式或测试可能出现的空位(代替)空位。不过谢谢。 –
如果你输入的是你在那里,那么你的正则表达式应该工作。我用grep测试了你的正则表达式,它在两种情况下都匹配。 – FailedDev
是啊......我不得不添加-P,我的服务器不能配置为使用默认的perl regEx ...不知道它是否足够进一步推测。 –