次の構文を持つファイルがあります。
slave_master: '1.2.3.4'
sedまたはawkに置き換えたいです。
slave_master:
- '1.2.3.4'
- '1.2.3.5'
ファイルの長さは数百行であり、影響を受けるべきではない異なるIP値を持つ他の行もあります。コマンドでこれを実行できますか?ありがとうございます。
答え1
sedの\ 1と\ 2は何ですか? (これを参考にしてください郵便はがき)
$ cat input.txt
hello: '234.34.34.2'
slave_master: '1.2.3.4'
test: '12.123.123.11'
hi: '234.2.32.33'
$ sed "s/\(slave_master:\)\(.*\)/\1\n -\2\n - '1.2.3.5'/" input.txt
hello: '234.34.34.2'
slave_master:
- '1.2.3.4'
- '1.2.3.5'
test: '12.123.123.11'
hi: '234.2.32.33'
答え2
わかりました。見つけました。
sed -i "s/slave_master: '1.2.3.4'/slave_master:\n \ - '1.2.3.4'\n \ - '1.2.3.5'/g" file.yaml
ノート:これは新しいnsmasterのIPを表す必要があります。最初はnsmasterが1つしかありませんでしたが、2番目のnsmasterを設定してyamlファイルに追加する必要がありました。