
Por exemplo, no editor vi, um arquivo é criado com 8 linhas da palavra hoje e eu queria saber como mudaria 4 linhas para a palavra ontem com um comando único.
Responder1
A maioria dos comandos ex (ou seja, 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 são dois números separados por vírgula, e o comando atua em todas as linhas do primeiro ao segundo número inclusive. Por exemplo
1,4s/today/yesterday/g
substitui todas as ocorrências de today
by 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 linha seguinte. Se você incluir a vírgula, mas omitir um dos números, isso significa a linha atual, por exemplo
,+1s/today/yesterday/g
executa a substituição na linha atual e na linha seguinte. Você também pode usar $
em vez de um número para indicar a última linha do arquivo. Se você omitir a vírgula e especificar apenas um número, o comando atuará apenas nesta linha, por exemplo
+1s/today/yesterday/g
executa a substituição apenas na linha seguinte.
Responder2
Você pode usar o comando:
:n,m s/today/yesterday/
ou seja, substitua a palavra 'hoje' por 'ontem' da linha n a m.
Responder3
Tente isto:
Vá para o modo de comando no editor vi e tente o comando abaixo:
:%s/today/yesterday/g
g - substitua o hoje pelo ontem globalmente.