Usando o vi para substituir uma string em vários arquivos

Às vezes você pode querer substituir ocorrências de uma cadeia em vários arquivos.

Existe uma maneira fácil de fazê-lo com a ajuda do editor vi.

Este exemplo ilustra o poder do vi:

Suponha que você tenha 100. Arquivos html, e você deseja substituir a ocorrência da string '2007 'com '2008'.

Como tal, execute o seguinte no seu prompt:

vi *. html

Isto irá abrir todos os arquivos que terminam com '. Html' em seu diretório de trabalho atual. Em seguida, emitir o seguinte comando:

:% Argdo s/2007/2008/g | wq

É isso! o comando acima irá loop sobre cada arquivo, substituindo (%) a palavra de 2007 com o Word 2008 a nível mundial (g), então ele irá salvar cada arquivo (w) e sair dela (q).

Note que a string de encontrar e usar a corda para a substituição pode ser substituída por expressões regulares. Por exemplo, um circunflexo (^) refere-se ao início de uma linha, o cifrão ($) refere-se a seu fim, etc Então, se fôssemos para substituir qualquer linha que começa com 'amostra' e que terminam com 'teste', uma poderia usar:

: Argdo% s / ^ .* amostra de teste $ / g | wc

onde .* corresponde a qualquer coisa entre a cadeia dois.

Note também que você pode fazer o localizar e substituir a ação sem o respeito ao caso (ou seja, uma busca por 'palavra' irá corresponder "palavra"). Para que o assunto, basta substituir '/ g' com '/ gi'

4 Comentários

mike 23 de agosto de 2008 às 12:24

Não é acento circunflexo, cenoura!

administrador 29 de agosto de 2008 às 03:43

Deve ter sido pensando em comida quando digitá-lo :)
Saúde

Jens 16 de julho, 2010 em 20:35

Obrigado por esta dica, você me salvou um monte de trabalhar com isso.

Muito do que 27 de setembro de 2010 às 13:49

Thanx muito, me ajudou muito.

Eu tenho um comentário, por número relativamente pequeno de substituições, solicitando substituição também pode ser útil.

: Argdo% s / SEARCH_STRING / replace_string / gc | wq

com um adicional de 'c' para 'confirmação'

Obrigado mais uma vez :)

Deixe um comentário

O seu comentário