[英]Sed prints several lines instead of matching group
我有xml文件,例如:
<configuration>
<property>
<name>prop_name</name>
<value>prop_value</value>
</property>
</configuration>
我想打印屬性的值(在本例中為“prop_value”)。 我知道 sed 不是這個問題的最佳解決方案,但我不得不使用 bash :((
我試圖使用下一個結構:
sed -n '/prop_name/{:a;N;/<\/value>/!ba {s|<value>\(.*\)</value>|\1|p}}' file
但我得到的是:
<name>prop_name</name>
prop_value
即使不匹配,它也會打印模式空間中的每一行。 是否可以從 sed 的模式空間中刪除第一行並僅打印匹配的組? 提前感謝大家的幫助。
你忘了之前所有你擁有的數據相匹配<value>
您保持與模式空間N
命令,添加.*
在之前<value>
sed -n '/prop_name/{:a;N;/<\/value>/!ba {s|.*<value>\(.*\)</value>|\1|p}}'
# ^^
請參閱在線sed
演示:
s='<configuration>
<property>
<name>prop_name</name>
<value>prop_value</value>
</property>
</configuration>'
sed -n '/prop_name/{:a;N;/<\/value>/!ba {s|.*<value>\(.*\)</value>|\1|p}}' <<< "$s"
# => prop_value
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.