从 xml 文件中删除带有空格和引号的字符串

从 xml 文件中删除带有空格和引号的字符串

我想 currencyId="GBP" 从 xml 文件中删除该字符串。请注意第一个字母 c 之前有一个空格。我在解析数据时遇到困难,删除该字符串(包括初始空格)会让我更容易。我知道我可以使用 sed,但是字符串开头的空格和双引号似乎让我到目前为止的尝试陷入困境。

为了澄清这一点,这里有一个 xml 示例。

<location>Ethiopia</location><country>ET</country><shippingInfo>  
 <shippingServiceCost currencyId="GBP">2.83</shippingServiceCost>
<shippingType>Flat</shippingType>
<shipToLocations>Worldwide</shipToLocations></shippingInfo><sellingStatus>
<currentPrice currencyId="USD">157.5</currentPrice>
<convertedCurrentPrice currencyId="GBP">111.45</convertedCurrentPrice>

如果我实现了我的目标,convertedCurrentPrice 行将显示:

<convertedCurrentPrice>111.45</convertedCurrentPrice>

答案1

sed -i 's/ currencyId="GBP"//' file.xml- 这对我有用。g如果要替换所有实例,请在 sed 命令末尾添加。

答案2

由于您尚未指定是否要全局替换字符串,我假设它替换特定行,因此命令是,

sed -i '6s+currencyId="GBP"++' 文件名.xml
最好在编辑之前备份文件,所以为了安全起见,我会使用,

sed -i.bak '6s+currencyId="GBP"++' filename.xml

答案3

命令xmlstarlet

xmlstarlet ed -d '//convertedCurrentPrice/@currencyId[. = "GBP"]' file.xml

假设属性值为 ,则将从整个文档中的所有节点中删除所有currencyId属性。convertedCurrentPriceGBP

相关内容