我有一个具有以下语法的文件:
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 文件中。