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.