使用 sed 在 xml 中搜索一个值
Search xml for a value using sed
我有下面的 xml 文件
<documents>
<document><title>some title1</title><abstract>Some abstract1</abstract></document>
<document><title>some title2</title><abstract>Some abstract2</abstract></document>
<document><title>some title3</title><abstract>Some abstract3</abstract></document>
<document><title>some title4</title><abstract>Some abstract4</abstract></document>
</documents>
我正在尝试编写一个 ksh 脚本来获取基于 title=title4 的抽象值
xmllint,我的机器不允许 xstartlet(访问问题)
我试过
sed -n '/abstract/{s/.*<abstract>//;s/<\/abstract.*//;p;}' connections.xml
如何修改它以根据标题进行搜索
根据您给出的例子:
sed -n '/title>.*title4<\/title>/{s#.*<abstract>##;s#</abstract>.*##;p}' file
会给你:
Some abstract4
grep 方法:
grep -Poz '<title>.*?title4</title><abstract>\K[^<>]+(?=</abstract>)' connections.xml && echo ""
输出:
Some abstract4
我有下面的 xml 文件
<documents>
<document><title>some title1</title><abstract>Some abstract1</abstract></document>
<document><title>some title2</title><abstract>Some abstract2</abstract></document>
<document><title>some title3</title><abstract>Some abstract3</abstract></document>
<document><title>some title4</title><abstract>Some abstract4</abstract></document>
</documents>
我正在尝试编写一个 ksh 脚本来获取基于 title=title4 的抽象值
xmllint,我的机器不允许 xstartlet(访问问题)
我试过
sed -n '/abstract/{s/.*<abstract>//;s/<\/abstract.*//;p;}' connections.xml
如何修改它以根据标题进行搜索
根据您给出的例子:
sed -n '/title>.*title4<\/title>/{s#.*<abstract>##;s#</abstract>.*##;p}' file
会给你:
Some abstract4
grep 方法:
grep -Poz '<title>.*?title4</title><abstract>\K[^<>]+(?=</abstract>)' connections.xml && echo ""
输出:
Some abstract4