![我想找到一个单词并将其替换为新行中的新单词](https://linux22.com/image/143498/%E6%88%91%E6%83%B3%E6%89%BE%E5%88%B0%E4%B8%80%E4%B8%AA%E5%8D%95%E8%AF%8D%E5%B9%B6%E5%B0%86%E5%85%B6%E6%9B%BF%E6%8D%A2%E4%B8%BA%E6%96%B0%E8%A1%8C%E4%B8%AD%E7%9A%84%E6%96%B0%E5%8D%95%E8%AF%8D.png)
喜欢 :
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小星或类似的。