次の内容を含むXMLファイルがあります。
<ipaddr>192.168.1.1</ipaddr>
<subnet>24</subnet>
目的は、1つのコマンドで<ipaddr>192.168.1.1</ipaddr>
to<ipaddr>192.168.1.125</ipaddr>
とtoを変更することです<subnet>24</subnet>
。<subnet>25</subnet>
ファイル内の他のサブネットタグを変更したくありません。
私が経験している問題は、後ろに改行文字があり、</ipaddr>
その前に2つのタブ文字があることです<subnet>
。
私はこれを試しましたが、awk '{gsub (/<ipaddr>192.168.1.1<\/ipaddr>\n<subnet>24<\/subnet>/, "<ipaddr>192.168.1.125<\/ipaddr>\n\t\t<subnet>25<\/subnet>")}' config.xml
うまくいきません。
誰かが私に正しい方向を教えてもらえますか?
ベストアンサー1
1行ではIPを変更し、次の行ではサブネットを変更するとします。
sed -E '/(192.168.1.)1/{s//\1125/; n; s/>24</>25</}' infile
IPは変更されますが、サブネットは変更されない場合、エラーは報告されません。あなたの説明によると、これはあなたが望むようです。