Você pode tentar isso com o GNU sed
ou outras implementações sed
que agora também tratam \n
como nova linha na substituição:
sed 's|optype[^>]*/>|&\n|g' test.pmml
POSIXly:
sed 's|optype[^>]*/>|&\
|g' test.pmml
Eu tenho um arquivo pmml contendo uma linha:
<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>
Eu quero inserir uma nova linha depois de todas as ocorrências optype= "continuous" />
.
Consegui inserir a nova linha entre o primeiro optype
e o último />
usando sed 's:optype.*/>:a&\n:g' test.pmml > new.pmml
.
Como posso fazer isso para todas as ocorrências do padrão? (Eu prefiro sed, mas soluções usando outras ferramentas também estão bem.)
Se o que você quer fazer é formatar bem o seu arquivo XML, algo como XMLStarlet pode fazer isso para você:
xmlstarlet fo file.xml >new-file.xml
O fato de seu arquivo XML ser um arquivo pmml
não deve importar, contanto que pmml
seja um formato XML.
XMLStarlet é uma ferramenta XML geral para executar consultas XPATH etc., mas também existem ferramentas específicas para formatar documentos XML, como Tidy
.
Tags sed xml shell-script