Eu quero encontrar uma palavra e substituí-la por uma nova nova em uma nova linha [closed]

1

Como:

sed 's/</risk_measure_slice>/</risk_measure_slice>\n/g' allinoneline1.mqf

O que não está funcionando

    
por kartik 05.08.2018 / 08:27

1 resposta

1

Sua expressão regular e seu texto de substituição contêm / . Este também é o caractere usado por sed como o delimitador em seu comando s .

Isso significa que você terá que escapar do seu / , como em

sed 's/<\/risk_measure_slice>/<\/risk_measure_slice>\n/g' allinoneline1.mqf

ou use outro delimitador, como em

sed 's#</risk_measure_slice>#</risk_measure_slice>\n#g' allinoneline1.mqf

ou menor,

sed 's#</risk_measure_slice>#&\n#g' allinoneline1.mqf

Observe que o texto de substituição contém \n . Isso será interpretado como uma nova linha apenas pelo GNU sed . Se estiver usando BSD sed , esse caractere será exibido como n . A sintaxe padrão suportada pelo GNU sed , BSD sed ou qualquer sed compatível com POSIX seria:

sed 's#</risk_measure_slice>#&\
#g' allinoneline1.mqf

Se você estiver usando o GNU sed e quiser sua marca de finalização XML em uma nova linha, o \n deve preceder a tag e não vir depois dela.

Você também pode procurar ferramentas para formatação / modificação / consulta de arquivos XML, como XMLStarlet ou similar.

    
por 05.08.2018 / 09:27

Tags