![sed를 사용하여 한 줄을 세 줄로 바꾸십시오.](https://linux55.com/image/100800/sed%EB%A5%BC%20%EC%82%AC%EC%9A%A9%ED%95%98%EC%97%AC%20%ED%95%9C%20%EC%A4%84%EC%9D%84%20%EC%84%B8%20%EC%A4%84%EB%A1%9C%20%EB%B0%94%EA%BE%B8%EC%8B%AD%EC%8B%9C%EC%98%A4..png)
다음 구문을 가진 파일이 있습니다.
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 파일에도 추가해야 했습니다.