私のファイルには識別できないデータが含まれています。次のように教えてください。
<?xml version="1.0" encoding="UTF-8" ?><ns0:collection
xmlns:ns0="http://namspace/Service/1.0"><Record>
.
.</Record></ns0:collection>
N個のファイルをマージして1つのファイルを作成する必要があります。したがって、次のことを行う必要があります。
</ns0:collection>
最初のファイルから閉じるタグを削除するだけです。- 次の(n-1)個のファイルの
<?xml version="1.0" encoding="UTF-8" ?><ns0:collection xmlns:ns0="http://namspace/Service/1.0">
合計を削除する</ns0:collection>
- 最後のファイルのみを削除し、
<?xml version="1.0" encoding="UTF-8" ?><ns0:collection xmlns:ns0="http://namspace/Service/1.0">
すべてマージする必要があります。
コマンドを使用して最初のファイルを処理しようとしましたが、sed
結果が出ませんでした。 "merged.xml"は空でした。
sed '/<\/ns0:collection>/d' $file1 > merged.xml
どんな提案がありますか?
ベストアンサー1
useのみを指定していないsed
ため、アクセス権がある場合xml_grep
(参照コマンドラインから複数のXMLファイルをマージする、2番目の答え)、これはあなたに多くの負担を与え、次の簡単なマージ操作を単一のコマンドで実行できるため、これをお勧めします。
xml_grep --cond Record --wrap "ns0:collection" --descr 'xmlns:ns0="http://namespace/Service/1.0"' --encoding "UTF-8" *.xml
テストファイル:
テスト.xml
<?xml version="1.0" encoding="UTF-8" ?><ns0:collection
xmlns:ns0="http://namespace/Service/1.0""><Record>
Test
</Record></ns0:collection>
テスト1.xml
<?xml version="1.0" encoding="UTF-8" ?><ns0:collection
xmlns:ns0="http://namespace/Service/1.0"><Record>
Test 1<a>a</a><b c="c">d</b>
</Record></ns0:collection>
結果
<?xml version="1.0" encoding="UTF-8" ?>
<ns0:collection xmlns:ns0="http://namespace/Service/1.0">
<Record>
Test 1<a>a</a><b c="c">d</b></Record><Record>
Test
</Record>
</ns0:collection>
XMLファイルを扱うときに構造を台無しにする可能性がsed
非常に高く、誤った形式のXML文書になりやすいので、XML認識ツールを使用することをお勧めします!