簡體   English   中英

sed 打印多行而不是匹配組

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM