我在一些 xml 上运行 grep 命令,它似乎误解了我尝试使用的正则表达式。
命令如下
grep '<ernm:NewReleaseMessage.*?>' ./075679942012_ORIGNAL.xml
似乎正在发生的事情是,正则表达式的 ?>
方面似乎没有匹配,而不是匹配到 > 的第一次出现
有什么想法吗?
最佳答案
如果你想获取第一次出现 >
字符的文本,请尝试以下命令,
grep -o '<ernm:NewReleaseMessage[^>]*>' file
如果你想要整行然后删除 -o
参数。
示例:
$ cat aa1.txt
<ernm:NewReleaseMessage blah> foo bar>
$ grep -o '<ernm:NewReleaseMessage[^>]*>' aa1.txt
<ernm:NewReleaseMessage blah>
grep
with -o
仅打印匹配的文本。
[^>]*
- 不是 >
字符零个或多个。所以它匹配 >
字符的第一次出现。
关于regex - grep 不使用正则表达式在 xml 上返回预期结果,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24234358/