只有当我抓住Name =" Mario Rossi"?
时才能更换此值我需要将94替换为98仅用于
<PMRQ:Name>John Smith</PMRQ:Name>
<PMRQ:PmtId>
<PMRQ:InstrId>95</PMRQ:InstrId>
<PMRQ:EndToEndId>45700100523011712061901541</PMRQ:EndToEndId>
</PMRQ:PmtId>
<PMRQ:Name>Mario Rossi</PMRQ:Name>
<PMRQ:PmtId>
<PMRQ:InstrId>94</PMRQ:InstrId>
<PMRQ:EndToEndId>45700100522011712061901541</PMRQ:EndToEndId>
</PMRQ:PmtId>
感谢您的帮助!!
答案 0 :(得分:1)
例如,在xsh中你可以写
open file.xml ;
for //PMRQ:Name[.="Mario Rossi"]
set following-sibling::PMRQ:PmtId[1]/PMRQ:InstrId 98 ;
save :b ;
答案 1 :(得分:0)
这样做,不需要额外的模块。
假设$ text包含您要修改的多行数据。然后就做:
$text=~s/<PMRQ:Name>Mario Rossi<\/PMRQ:Name>\s*<PMRQ:PmtId>\s*<PMRQ:InstrId>\K\d+/98/msg;
&#39;&#39;&#39;最后需要(全局)修饰符来执行多个匹配(但如果你有零个匹配或一个匹配则不会受到伤害。)