喜欢 :
sed 's/</risk_measure_slice>/</risk_measure_slice>\n/g' allinoneline1.mqf
哪个不起作用
答案1
您的正则表达式和替换文本包含/
.这也是sed
在其s
命令中用作分隔符的字符。
这意味着您将不得不逃避您的/
,如
sed 's/<\/risk_measure_slice>/<\/risk_measure_slice>\n/g' allinoneline1.mqf
或使用另一个分隔符,如
sed 's#</risk_measure_slice>#</risk_measure_slice>\n#g' allinoneline1.mqf
或者更短,
sed 's#</risk_measure_slice>#&\n#g' allinoneline1.mqf
请注意,您的替换文本包含\n
.这只会被 GNU 解释为换行符sed
。如果使用 BSD sed
,该字符将输出为n
。 GNU sed
、BSDsed
或任何符合 POSIX的标准支持的标准语法sed
是:
sed 's#</risk_measure_slice>#&\
#g' allinoneline1.mqf
如果使用 GNUsed
并且您希望将 XML 结束标记放在新行上,则 应该\n
位于标记之前,而不是位于标记之后。
您可能还想研究用于格式化/修改/查询 XML 文件的工具,例如XML小星或类似的。