você está aqui: Home  → Arquivo de Mensagens

Separação de caracteres com vim

Colaboração: Rubens Queiroz de Almeida

Data de Publicação: 30 de abril de 2012

Recentemente eu tive que editar uma longa lista de nomes e telefones. Os números de telefone estavam ligados, sem espaços, o que dificulta a leitura. Uma linha de exemplo:

  1999876654 ! Joaquim
  
  ... e milhares de outras linhas

Para fazer a mudança, com o vim, eu emiti o seguinte comando:

  %s/^../& /

Este comando me retornou:

  19 99876654 ! Joaquim

O que eu fiz foi pegar os dois caracteres iniciais do arquivo, representados por ^.. e trocar pelo mesmo caractere (&) e acrescentar um espaço em branco. O caret (^) significa "começo de linha". Os pontos representam qualquer caractere que estiver naquela posição. O caractere & indica a string pela qual buscamos. Por exemplo, se eu quiser trocar, em um texto, todas as ocorrências da palavra teste, por teste concluído , basta emitir o comando:

  %s/teste/& concluído/

O & será substituído pela palavra teste, na segunda parte da expressão acima.

Continuando ...

Falta agora separar o número do telefone em dois blocos de quatro algarismos. Para isto, emiti o comando:

  %s/^.. ..../& /

E pronto:

  19 9987 6654 ! Joaquim

A nossa cabeça funciona melhor quando podemos agrupar os números em blocos menores.

E obrigado ao vim :-)



Veja a relação completa dos artigos de Rubens Queiroz de Almeida

 

 

Opinião dos Leitores

Murilo Fujita
04 Mai 2012, 23:28
Queiroz, excelente mais uma vez.
Experimentarei a dica do leitor Fernando Roxo também.
O meu agradecimento a ambos!
Fernando Roxo
30 Abr 2012, 16:29
Excelente !

Há uma outra maneira de faazer o mesmo em um comando usando as "memórias" das expressões regulares :

s/^\(..\)\(....\)/\1 \2 /

Isto deve fazer a mesma mágica em uma passagem.

*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