2017-07-11 37 views
-1

一個值搜索XML使用的sed

<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腳本基於標題= TITLE4

xmllint來獲取抽象值低於xml文件,xstartlet不允許在我的機器(訪問問題)

我與

sed -n '/abstract/{s/.*<abstract>//;s/<\/abstract.*//;p;}' connections.xml 

嘗試如何修改THI s到基於搜索基於你給出的例子標題

回答

1

sed -n '/title>.*title4<\/title>/{s#.*<abstract>##;s#</abstract>.*##;p}' file 

會給你:

Some abstract4 
+0

我收到命令亂碼的消息。 – useranon

+0

經過一番編輯,下面的代碼工作sed -n'/title>.*title4 <\/title> /{s#.* ##; s#。* ##; p;}'documents.xml – useranon

0

的grep方法:

grep -Poz '<title>.*?title4</title><abstract>\K[^<>]+(?=</abstract>)' connections.xml && echo "" 

輸出:

Some abstract4 
+0

grep:非法選項 - P grep:非法選項 - o grep:非法選項 - z 用法:grep -hblcnsviw模式文件。 。 。 – useranon

+0

@useranon,你有相當差的環境:沒有grep,沒有xmlstarlet。我對你最深切的哀悼...... – RomanPerekhrest