我想使用命令行正则表达式提取这些标记之间的版本号:
$ cat file.xml
<version>1.0-beta</version>
# example of solution
$ grep regex file.xml
1.0-beta
答案 0 :(得分:1)
将grep
与PCRE(-P
)一起使用:
grep -Po '<version>\K[^<]+(?=</version>)' file.xml
示例:强>
$ grep -Po '<version>\K[^<]+(?=</version>)' <<<'<version>1.0-beta</version>'
1.0-beta
答案 1 :(得分:0)
你可以试试这个:
\<version\>(.*?)\</version\>
答案 2 :(得分:0)
这是一个awk命令,它也适用于BSD或非GNU版本:
awk -F '</?version>' '{print $2}' file
1.0-beta
答案 3 :(得分:0)
如果您需要适用于任何标记的内容:
grep -Po "(?<=>)[^<>]*(?=<)" file.xml
说明:
-P
:将模式解释为Perl正则表达式(PCRE),这是必需的,因为我们使用了lookarounds
-o
:仅打印与模式匹配的内容,多个匹配由新行分隔
(?<=>)
:匹配>
[^<>]*
:符合任何字符但不符合<
或>
的字符类,*
表示0次或更多次
(?=<)
:匹配<