如何基于xml中的可用字符串替换字符串

时间:2019-05-11 10:57:40

标签: xml shell sed

如果要在同一节点中Url在xml中包含pB-,我想替换direction =“ Bidir”。

我尝试过

sed -i 's/Direction="unidir"/Direction="bidir"/g'

但是我必须为xml中存在pB-的每个标头执行此操作。

pri.xml内容-

<pri Bor="NO" Bpp="2" Direction="unidir" Hori="1200" Passes="12" Speed="40" Ver="1200" Url="pmode-jaguar9-12pU-40ips-2bpp-12x12dpi-12x12dpi_rampX1.xml" >

 <pri Bor="NO" Bpp="2" Direction="unidir" Hor="1200" Passes="12" Speed="40" Ver="1200" Url="pmode-jaguar9-12pB-40ips-2bpp-12x12dpi-12x12dpi_rampX1.xml" >

在第二行中,您可以看到-12pB-存在,如果存在pB-,那么我必须在同一行中替换Direction =“ bidir”。由于xml包含100多行。

我希望xml应该像-

<pri Bor="NO" Bpp="2" Direction="unidir" Hori="1200" Passes="12" Speed="40" Ver="1200" Url="pmode-jaguar9-12pU-40ips-2bpp-12x12dpi-12x12dpi_rampX1.xml" >

 <pri Bor="NO" Bpp="2" Direction="bidir" Hor="1200" Passes="12" Speed="40" Ver="1200" Url="pmode-jaguar9-12pB-40ips-2bpp-12x12dpi-12x12dpi_rampX1.xml

2 个答案:

答案 0 :(得分:0)

sed“ / pB- / s / Direction = \” unidir \“ / Direction = \” bidir \“ /” xmlFile

答案 1 :(得分:0)

如您的示例中,如果pB-总是在Direction=之后:

sed 's/\(Direction="\)unidir\(".*pB-\)/\1bidir\2/'