모든 패턴 발생 뒤에 새 줄 삽입

모든 패턴 발생 뒤에 새 줄 삽입

다음 줄이 포함된 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

sedGNU 또는 다른 구현을 사용하여 sed이를 시도 할 수 있으며 이제 \n대체 시 개행 문자로 처리됩니다.

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

POSIX적으로:

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

답변2

당신이 원하는 것이 XML 파일의 형식을 적절하게 지정하는 것이라면 다음과 같습니다.XML 스타당신을 위해 이것을 할 수 있습니다:

xmlstarlet fo file.xml >new-file.xml

pmmlXML 파일이 pmmlXML 형식인 한 XML 파일이 파일이라는 사실은 중요하지 않습니다.

XMLStarlet은 XPATH 쿼리 등을 수행하기 위한 일반 XML 도구이지만 다음과 같은 XML 문서 형식화를 위한 특수 도구도 있습니다.Tidy.

관련 정보