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.