다음 구문을 가진 파일이 있습니다.
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가 하나만 있었는데 두 번째 nsmaster를 설정하고 yaml 파일에도 추가해야 했습니다.