.xmlファイルを処理するスクリプトを記述しようとしています。 <title>
要素を持つすべての行を検索し、それをコピーして、見つかった次の行に貼り付ける必要がありますが、要素タイプも変更する必要があります。例を示します。
元の:
いくつかのテキスト
<title>
text 1</title>
いくつかのテキスト<title>
text 2</title>
いくつかのテキスト
そして、これは私が得る必要があるものです:
いくつかのテキスト
<title>
text 1</title>
<description>
text 1</description>
いくつかのテキスト<title>
text 2</title>
<description>
text 2</description>
いくつかのテキスト
Sedやgrep(またはその他のツール)を使用して実行できますか?
XMLパーサー/プロセッサーは、XMLデータを操作するための適切なツールです。
xmlstarlet 解決策:
模範的なinput.xml
コンテンツ:
<root>
some text
<title>text 1</title>
some text
<title>text 2</title>
some text </root>
xmlstarlet ed -a '//title' -t elem -n 'description' -v '' input.xml \
| xmlstarlet ed -u '//description' -x './preceding-sibling::title[1]/text()'
出力:
<?xml version="1.0"?>
<root>
some text
<title>text 1</title><description>text 1</description>
some text
<title>text 2</title><description>text 2</description>
some text </root>
ed
-編集モード
-a
-追加アクション
-u
-更新アクション