在所有出现的模式后插入新行

在所有出现的模式后插入新行

我有一个 pmml 文件,其中包含一行:

<DataField dataType="string" name="class" optype="categorical"><Value value="y0" /><Value value="y1" /><Value value="y2" /><Value value="y3" /><Value value= "y4" /></DataField><DataField dataType="double" name="x0" optype="continuous" /><DataField dataType="double" name="x1" optype= "continuous" /><DataField dataType="double" name="x2" optype="continuo    us" /><DataField dataType="double" name="x3" optype="continuous" /><DataField dataType="double" name="x4" optype="continuous" /><DataField dataType="double" name="x5" optype="continuous" /><DataField dataType="double" name="x6" optype="continuous" /><DataField dataType="double" name="x7" optype="continuous" /><DataField dataType="double" name="x8" optype="continuous" /><DataField dataType="double" name="x9" optype="continuous" /><DataField dataType="double" name="x10" optype="continuous" /><DataField dataType="double" name="x11" optype="continuous" /><DataField dataType="double" name="x12" optype="continuous" /><DataField dataType="double" name="x13" optype="continuous" /><DataField dataType="double" name="x14" optype="continuous" /><DataField dataType="double" name="x15" optype="continuous" /><DataField dataType="double" name="x16" optype="continuous" /><DataField dataType="double" name="x17" optype="continuous" /><DataField dataType="double" name="x18"     optype="continuous" /><DataField dataType="double" name="x19" optype="continuous" /><DataField dataType="double" name="x20" optype="continuous" /><DataField dataType="double" name="x21" optype="continuous" /><DataField dataType="double" name="x22" optype="continuous" /><DataField dataType="double" name="x23" optype="continuous" /></DerivedField></NeuralOutput></NeuralOutputs></NeuralNetwork></PMML>   

我想在所有 optype= "continuous" />出现的事件之后插入一个新行。

我能够使用. 在第一行optype和最后一行之间插入新行。/>sed 's:optype.*/>:a&\n:g' test.pmml > new.pmml

我怎样才能对所有出现的模式执行此操作? (我更喜欢 sed,但使用其他工具的解决方案也很好。)

答案1

您可以使用 GNUsed或其他sed实现来尝试此操作,这些实现现在也将其视为\n替换中的换行符:

sed 's|optype[^>]*/>|&\n|g' test.pmml

POSIXly:

sed 's|optype[^>]*/>|&\
|g' test.pmml

答案2

如果你想要做的是很好地格式化你的 XML 文件,那么像XML小星可以为您做到这一点:

xmlstarlet fo file.xml >new-file.xml

pmml只要XML 文件pmml是 XML 格式,那么XML 文件是一个文件这一事实并不重要。

XMLStarlet 是一个通用的 XML 工具,用于执行 XPATH 查询等,但也有专门用于格式化 XML 文档的工具,例如Tidy

相关内容