如何使用sed从文本文件中提取匹配的模式?

时间:2017-04-28 09:48:11

标签: bash sed

我正在尝试使用sed提取版本中包含的元素。我有一个匹配所有元素的模式([0-9]{1,2}\.[0-9]{1}\.[0-9]{1}),但我只需要第一个匹配。

目标是能够输出匹配,并将匹配 - 没有引号 - 输出到标准输出。

关于如何做到这一点的任何想法?

<?xml version='1.0' encoding='utf-8'?> <widget id="com.company.application" version="1.0.0" xmlns="http://www.w3.org/ns/widgets" xmlns:cdv="http://cordova.apache.org/ns/1.0"> ...

2 个答案:

答案 0 :(得分:1)

不要使用正则表达式来解析xml,例如使用xml解析器,xmllint,它捆绑在大多数linux / mac上,即:

xmllint --xpath 'string(//*[local-name()="widget"]/@version)' xmlfile
# 1.0.0

答案 1 :(得分:0)

使用xmlstarlet工具的解决方案:

xmlstarlet sel -t -m '_:widget' -v "@version" -n xmlfile

输出:

1.0.0

-v "@version" - 获取version属性

的值