você está aqui: Home  → Arquivo de Mensagens

Mais dicas de vi

Colaboração: Fernando M. Roxo da Motta

Data de Publicação: 24 de Outubro de 2003

Quando se usar :

  :s/.../.../[g][c]

Estas "/" são delimitadoras de campo. Os campos são os alvos (a primeira parte) e o destino (a segunda parte, como fica fácil depreender;)). Se por um acaso o delimitador aparece em qualquer das partes ele terá que ser marcado ("escapado", filtrado) como um não delimitador. Por isto no exemplo acima apareceu o tal "GNU\/Linux". Só que esta história pode tornar muito complicada a leitura dos padrões, aumentando a probabilidade de erro. Por exemplo :

  :s/\/usr\/tmp/\/var\/lib\/lixo/g

E aí, o que está sendo trocado por o quê ? Complicado, né ?

Bem, a melhor maneira de resolver este embróglio é lembrar que embora normalmente se use a "/" como delimitador, vários outros caracteres podem ter esta função. Por exemplo, se usarmos o "#" como delimitador acima teremos :

  :s#/usr/tmp#/var/lib/lixo#g

Que torna muito mais fácil a leitura do comando, certo ? Logo o exemplo lá de cima poderia ficar :

  :s#Linux#GNU/Linux#g

Que torna claro o comando a ser executado.

E se usando o "#" como delimitador aparecer um "#" no padrão :

  :s#/usr/tmp#/var/tmp/usr##

Oops !! Não, para funcionar a lógica é a mesma anterior :

  :s#/usr/tmp#/var/tmp/usr\##

Ainda fica mais legível um único "escape" (a "\" ) aplicado a um "#" que aplicar naquele monte de "/", certo ? Mas ainda pode ficar muito melhor :

  :s@/usr/tmp@/var/tmp/usr#@

ou

  :s+/usr/tmp+/var/tmp/usr#+

Resumindo, existem vários delimitadores possíveis, use aquele que melhor se acerte com os padrões necessários para pesquisa e substituição.


Wget: Baixando Sites e Arquivos com Wget

http://www.linuxbsd.com.br/phpLinuxBSD/modules/artigos_tecnicos/wget.htm



 

 

Veja a relação completa dos artigos de Fernando M. Roxo da Motta

Opinião dos Leitores

Seja o primeiro a comentar este artigo
*Nome:
Email:
Me notifique sobre novos comentários nessa página
Oculte meu email
*Texto:
 
  Para publicar seu comentário, digite o código contido na imagem acima
 


Powered by Scriptsmill Comments Script