次の内容を含むファイルがあります。
<alarm="yes">
<moduleId>aaa</moduleId>
<documentation>
<description>bbb</description>
<Object>ccc</Object>
</documentation>
</alarmSpecification>
<alarm="yes">
<moduleId>bbb</moduleId>
<documentation>
<description>abc</description>
<Object>xxx</Object>
</documentation>
</alarmSpecification>
パターンを合わせて一行で印刷したいです。ここでモードはアラーム&アラーム仕様です。出力は次のとおりです。
<alarm="yes">,<moduleId>aaa</moduleId>,<documentation>,<description>bbb</description>,<Object>ccc</Object>,</documentation>,</alarmSpecification>
<alarm="yes">,<moduleId>aaa</moduleId>,<documentation>,<description>bbb</description>,<Object>ccc</Object>,</documentation>,</alarmSpecification>
実装方法をご案内ください。
ベストアンサー1
これは有効なXMLではないようであるため、次のプレーンテキスト処理を使用することをお勧めしますsed
。
sed 'H;/<alarm=/h;/<\/alarmSpecification>/!d;g;s/\n/,/g'
H
H
既存のスペースに行を追加する/<alarm=/h
<alarm
新しいフィールドで収集された行をリセットします。/<\/alarmSpecification>/!d
警告でない場合、指定された行で停止- それ以外の場合、予約済みスペースに収集されたilnesは改行
g
で置き換えられます。,
s/\n/,/g