regex - grep 不使用正则表达式在 xml 上返回预期结果

标签 regex grep centos

我在一些 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/

相关文章:

n 个字符或至少 m 个字符的正则表达式

amazon-s3 - 如何在 amazon linux 2 或 centos 中将 s3fs 从 v1.74 更新到最新版本?

linux - spamassassin 和 spamc 的不同结果

c++ - 编译 rcpp 时遇到问题

regex - 使用前瞻和后瞻 (perl)

c# - 删除第一个字母后的所有内容

c - 参数列表是否将字符串引号传递给 C 中的 exec 命令?

macos - 从具有 '-x'(精确行匹配)的文件中读取 grep 模式...模式顺序重要吗?

linux - Linux 中的 fork() 和 grep 是什么意思?

php - 用于查找和替换 IMG 元素的正则表达式