複数行の文字列を別の文字列に挿入

複数行の文字列を別の文字列に挿入

XMLファイルに行を挿入する必要があります。

入れる

  <one>
  </one>

入力する

<tags>
</tags>

得る

<tags>
  <one>
  </one>
</tags>

私はこれを試しました:

sed "s#\\(< /tags>\\)#${multiline_string}\1#"

しかし、インデントは失われます。

ベストアンサー1

Matが言ったように、インデント(そして一般的に空白)はXMLファイルにとって重要ではありません。これ:

<one><tags></tags></one>

以下とまったく同じです。

<one>
 <tags>
 </tags>
</one>

しかし、これはインデントを維持しながら機能します。

$ cat myfile.xml
<tags>
</tags>
$ sed '/<one>/ a\
  <tags>\
  </tags>
' myfile.xml > newfile.xml
$ cat newfile.xml
<one>
  <tags>
  </tags>
</one>

...しかし、XMLで作業している場合は、実際にXMLを解析し、プログラムでツリーを操作できる高度な言語の使用を検討することができます。

おすすめ記事