Postagem em destaque

REGEX - Adicionando o dígito 9 em números de telefone.

Alguns dias atrás em um grupo do Telegram destinado a usuários Linux, um membro postou um problema que estava enfrentando com números de telefone em um servidor Asterisk.
Não era nada direcionado a configuração e sim aos números que a operadora entregava e ao conjunto de dígitos que VOIP usava para discar.

Considere o arquivo tel.txt com alguns números de celulares fictícios.

06571223344
06482114433
066933115512
06693225532
06565533221
06159933232
066955443210
07148813432

Vamos ao problema:

1º A operadora entregava os números sem o dígito 9.
2º Ele precisava inserir o digito 9 somente nos números de telefones onde o quarto digito fosse um número entre 6 e 9.
3º As alterações só podem ser realizadas nos números com 11 dígitos.

A princípio ele pensou em criar um shell script para tal tarefa, considerando que não seria uma má ideia.

Pensando um pouco e colocando na balança o tipo da tarefa, critério, e os 20 mil números a serem alterados, decidi usar uma REGEX, que me pouparia algumas desenhas de linhas de códigos.

Usando o comando sed e aplicando a regex ficou assim:
sed -i.bkp 's/^\([0-9]\{3\}\)\([6-9][0-9]\{7\}\)$/\19\2/' tel.txt

Captura os 3 primeiros dígitos e armazena no RHS '\1', depois captura os últimos 8 dígitos somente se o 4º digito estiver entre 6 e 9 e armazena no RHS '\2' e no final insere o digito 9 entre os dígitos armazenados em '\1' e '\2'; consequentemente o padrão já valida a quantidade de dígitos.

3 + 1 + 7 = 11

Visualizando conteúdo do arquivo após a execução.

065971223344
064982114433
066933115512
066993225532
065965533221
06159933232
066955443210
07148813432

Foi assim que a história teve um final feliz e o problema foi resolvido.



Comentários

Contato

Nome

E-mail *

Mensagem *