次のように、ルートタグなしでxml
呼び出されたファイルがあります。test.xml
<cat></cat>
<name></name>
<id></id>
<cat></cat>
<name></name>
<id></id>
出力が次のようにファイルをルートタグにラップするにはどうすればよいですか?
<root>
<cat></cat>
<name></name>
<id></id>
<cat></cat>
<name></name>
<id></id>
</root>
答え1
リダイレクトでこれを行うことができます。
(echo "<root>"; cat test.xml; echo "</root>") > wrapped-test.xml
インデントを使用すると、次のようになります。
(echo "<root>"; sed 's/^/ /' test.xml; echo "</root>") > wrapped-test.xml
答え2
最初の行の前に()を開くタグを挿入し、i\
最後の行()の後に$
()をa\
閉じるタグを追加します(スペースの書式は気にしません)。
編集するGNU
:どのバージョンが必要かを言及するのを忘れました。sed
コンテンツscript.sed
:
1 i\
<root>
$ a\
</root>
次のように実行します。
sed -f script.sed infile
次の出力に:
<root>
<cat></cat>
<name></name>
<id></id>
<cat></cat>
<name></name>
<id></id>
</root>