Significância de {n; s /… g;} no comando sed

0

Estou tentando executar o seguinte comando:% sed -i.bak -e "/world/{n;s/hello/hi/g;}" check.txt

conteúdo do check.txt:

 hello world  
 hello world  
hello at the last line world  
 hello world 1!!

O resultado recebido é:

 hello world  
 hi world  
hello at the last line world  
 hi world 1!!

Alguém pode explicar?

    
por B Poorva 04.05.2017 / 14:04

1 resposta

3

As chaves são usadas apenas para agrupar comandos, então a coisa toda é:

/world/{ ... }      - on lines matching /world/, do the commands within {}
n                   - load next line (and print the current)
s/hello/hi/g        - substitute 'hi' for 'hello' on the _currently loaded_ line

i.e. ele alterou hello para hi nas linhas que vêm depois das linhas com world (mas não verifica world nas linhas que realizam a substituição).

    
por 04.05.2017 / 14:21

Tags