sed -i 's/ currencyId="GBP"//' file.xml
- Isso funciona para mim. Adicione um g
no final do comando sed se você quiser substituir todas as instâncias.
Eu gostaria de remover a string
currencyId="GBP"
de um arquivo xml. Por favor, note que há um único espaço antes da primeira letra c.
Estou tendo problemas para analisar os dados e remover essa string (incluindo o espaço inicial) facilitaria para mim. Eu sei que posso usar sed, mas o espaço no início da string e aspas duplas parecem estar me atrapalhando em minhas tentativas até agora.
Para esclarecer, aqui está uma amostra do 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>
Se eu atingir meu objetivo, a linha convertedCurrentPrice poderá ser lida:
<convertedCurrentPrice>111.45</convertedCurrentPrice>
Como você não especificou se deseja substituir a string globalmente ou não, estou supondo que ela substitua por uma linha específica, então o comando seria
sed -i '6s+ currencyId="GBP"++' filename.xmlÉ melhor fazer o backup do arquivo antes de editá-lo, para estar no lado mais seguro que eu usaria,
sed -i.bak '6s+ currencyId="GBP"++' filename.xml