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

관련 정보