sed を使用して 1 行を 3 行に置き換えます。

sed を使用して 1 行を 3 行に置き換えます。

次の構文を持つファイルがあります。

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ファイルに追加する必要がありました。

関連情報