特定のタグセットに追加する必要があるXMLファイルがあります。デフォルトでは、ファイル構造は次のとおりです。
<key>servers</key>
<dict>
... Server Details ...
</dict>
次の行を一致させたい。
<key>servers</key>
<dict>
次に、サーバー接続を指定するXMLブロックを追加します<dict>
。新しいXMLチャンクはかなり長いので、独自のテキストファイルに入れました。
悩んsed
でawk
みましたが、悩みになりました。これを行うためにPerlを使用する例も見ましたが、perl
Perlに精通していません。私が知っている限り、sed
それはawk
マルチラインマッチングには良くありません。
複数行の一致を実行する理由は、このタグがXMLファイルで頻繁に使用され、内容全体を置き換えるのではなく、そのセクションにブロックを追加する必要があるため<dict>
です。<key>servers</key>
ベストアンサー1
次のことができます。
awk '{print}
$0 == "<dict>" && previous == "<key>servers</key>" {
system("cat other-file.xml")
}
{previous = $0}'