substituir uma linha por três linhas com sed

1

Eu tenho um arquivo com a seguinte sintaxe:

slave_master: '1.2.3.4'

e gostaria de substituí-lo por sed ou awk desta maneira:

slave_master:
  - '1.2.3.4'
  - '1.2.3.5'

O arquivo tem poucas centenas de linhas e há outras linhas com outros valores IP que não devem ser afetados. É possível fazê-lo com um comando? Muito obrigado.

    
por Max 13.12.2016 / 08:19

2 respostas

0

o que é \ 1 e \ 2 em sed? (consulte este post )

$ 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:\)\(.*\)/\n     -\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'
    
por 13.12.2016 / 09:32
1

Ok, eu achei:

sed -i "s/slave_master: '1.2.3.4'/slave_master:\n \      - '1.2.3.4'\n \      - '1.2.3.5'/g" file.yaml

Nota : isto deve representar o IP do novo nsmaster. Eu originalmente tinha apenas um nsmaster, então configurei um segundo e tive que adicioná-lo ao arquivo yaml também.

    
por 13.12.2016 / 08:30

Tags