Como substituir palavras em mais de uma linha no editor vi?

4

Por exemplo, no editor vi, um arquivo é criado com 8 linhas da palavra hoje e eu queria saber como eu mudaria 4 linhas para a palavra ontem com o comando once.

    
por JEllis23 23.10.2016 / 00:17

3 respostas

8

A maioria dos comandos ex (isto é, comandos invocados pressionando : (dois pontos) e depois o nome do comando) que atuam no conteúdo do arquivo permitem que um intervalo seja especificado antes do comando. Este intervalo especifica quais linhas são afetadas pelo comando. A forma geral de um intervalo é dois números separados por uma vírgula, e o comando atua em todas as linhas, desde o primeiro número até o segundo número, inclusive. Por exemplo

1,4s/today/yesterday/g

substitui todas as ocorrências de today por yesterday nas primeiras quatro linhas do arquivo.

Você pode colocar um sinal antes de um número para torná-lo relativo à linha atual. Por exemplo

-1,+1s/today/yesterday/g

realiza a substituição na linha anterior, na linha atual e na seguinte linha. Se você incluir a vírgula, mas deixar de fora um dos números, isso significa que a linha atual, por exemplo

,+1s/today/yesterday/g

realiza a substituição na linha atual e na seguinte linha. Você também pode usar $ em vez de um número para indicar a última linha do arquivo. Se você deixar de fora a vírgula e especificar apenas um número, o comando atua somente nessa linha, por exemplo,

+1s/today/yesterday/g

realiza a substituição apenas na linha seguinte.

    
por 23.10.2016 / 00:31
1

Você pode usar o comando:

:n,m s/today/yesterday/

i.e. substitua a palavra 'hoje' por 'ontem' da linha n para m.

    
por 23.10.2016 / 00:28
0

Tente isto:

Vá para o modo de comando no editor vi e tente o comando abaixo:

:%s/today/yesterday/g

g - substitua hoje por ontem globalmente.

    
por 09.12.2017 / 20:26

Tags