- Gerar link
- X
- Outros aplicativos
Postagem em destaque
- Gerar link
- X
- Outros aplicativos
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.
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.
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.
Foi assim que a história teve um final feliz e o problema foi resolvido.
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
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
3 + 1 + 7 = 11
Visualizando conteúdo do arquivo após a execução.
065971223344
064982114433
066933115512
066993225532
065965533221
06159933232
066955443210
07148813432
064982114433
066933115512
066993225532
065965533221
06159933232
066955443210
07148813432
Foi assim que a história teve um final feliz e o problema foi resolvido.
Comentários
Postar um comentário