使用sed从xml打印文本值

时间:2014-12-19 11:23:22

标签: sed

使用单行sed命令,我怎样才能获得某事某人值?

<value name="something">someone</value>

使用以下正则表达式<value name="(.*)">(.*)<\/value>我可以使用网站https://www.regex101.com/成功检索值。但是我不确定如何使用命令行来完成它。

提前致谢。

3 个答案:

答案 0 :(得分:1)

这样的东西
sed 's#.*name="\(.*\)">\(.*\)<.*#\1 \2#g'

<强>测试

$ echo "<value name=\"something\">someone</value>" | sed 's#.*name="\(.*\)">\(.*\)<.*#\1 \2#g'
something someone

答案 1 :(得分:0)

试试这个。

sed -r 's/.*"(.*)">(.*)<.*>$/\1 \2/'

答案 2 :(得分:0)

注意usual caveats关于使用正则表达式解析XML,这里有一个XML解析工具,可以对样本数据进行操作,找到&#34;值&#34;的属性值和标记值。标记为&#34;名称&#34;属性。

xmlstarlet sel -t -v '//value[@name]/@name' -n -v '//value[@name]' -n file.xml
something
someone