2つのパターンの間にテキストを挿入する

2つのパターンの間にテキストを挿入する

.xml次の内容を含むファイルがあります。

<controller-host></controller-host>
 <controller-port></controller-port>
<tier-name></tier-name>
<node-name></node-name>

私はこの出力が欲しい

<controller-host>AppDynamicsHost</controller-host>
 <controller-port>80</controller-port>
<tier-name>**the host name**</tier-name>
<node-name>tomcat server</node-name>

使用しようとしましたが、sed動作しません。

ベストアンサー1

そのファイルは有効なxmlではありません。開くと閉じるルートタグを追加する必要があります。このように:

<xml>
  <controller-host></controller-host>
  <controller-port></controller-port>
  <tier-name></tier-name>
  <node-name></node-name>
</xml>

この入力を使用すると、xmlパーサーを使用してxmlstartletコンテンツを編集できます。

xmlstarlet ed -O -u //controller-host -v "AppDynamicsHost" \
                 -u //controller-port -v "80" \
                 -u //tier-name -v "the hostname" \
                 -u //node-name -v "tomcat server" file
  • ed編集モードを開始xmlstartlet
  • -O<?xml version="1.0"?>宣言を省略
  • -u与えられたxpathを更新します。
  • -v与えられた値を設定

その後、出力は次のようになります。

<xml>
  <controller-host>AppDynamicsHost</controller-host>
  <controller-port>80</controller-port>
  <tier-name>the hostname</tier-name>
  <node-name>tomcat server</node-name>
</xml>

ファイルをその場で直接編集するには、このフラグを使用できます-L

おすすめ記事