De acordo com as Leis 12.965/2014 e 13.709/2018, que regulam o uso da Internet e o tratamento de dados pessoais no Brasil, ao me inscrever na newsletter do portal DICAS-L, autorizo o envio de notificações por e-mail ou outros meios e declaro estar ciente e concordar com seus Termos de Uso e Política de Privacidade.
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 pelo 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.
This policy contains information about your privacy. By posting, you are declaring that you understand this policy:
This policy is subject to change at any time and without notice.
These terms and conditions contain rules about posting comments. By submitting a comment, you are declaring that you agree with these rules:
Failure to comply with these rules may result in being banned from submitting further comments.
These terms and conditions are subject to change at any time and without notice.
Comentários