使用 sed 将一行替换为三行

使用 sed 将一行替换为三行

我有一个具有以下语法的文件:

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,然后我设置了第二个,并且还必须将其添加到 yaml 文件中。

相关内容