使用 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