Estações de trabalho on-line OnWorks Linux e Windows

Logotipo

Hospedagem online grátis para estações de trabalho

<Anterior | Conteúdo | Próxima>

Validando uma lista de telefones com grep

Em nosso exemplo anterior, examinamos números de telefone únicos e verificamos se eles estão formatados corretamente. Um cenário mais realista seria verificar uma lista de números, então vamos fazer uma lista. Faremos isso recitando um encantamento mágico na linha de comando. Será mágico porque não cobrimos a maioria dos comandos envolvidos, mas não se preocupe. Chegaremos lá nos próximos capítulos. Aqui está o encantamento:



[me @ linuxbox ~] $ para i em {1..10}; do echo "($ {RANDOM: 0: 3}) $ {RANDO M: 0: 3} - $ {RANDOM: 0: 4}" >> phonelist.txt; feito

[me @ linuxbox ~] $ para i em {1..10}; do echo "($ {RANDOM: 0: 3}) $ {RANDO M: 0: 3} - $ {RANDOM: 0: 4}" >> phonelist.txt; feito


Este comando irá produzir um arquivo chamado lista telefônica.txt contendo dez números de telefone. Cada vez que o comando é repetido, outros dez números são adicionados à lista. Também podemos alterar o valor 10 próximo ao início do comando para produzir mais ou menos números de telefone. Se examinarmos o conteúdo do arquivo, no entanto, veremos que temos um problema:



imagem

[me @ linuxbox ~] $ lista telefônica de gatos.txt


(232).

298-2265

(624).

381-1078

(540).

126-1980

(874).

163-2885

(286).

254-2860

(292).

108-518

(129).

44-1379

(458).

273-1642

(686).

299-8268

(198).

307-2440


Alguns dos números estão malformados, o que é perfeito para nossos propósitos, uma vez que usaremos

grep para validá-los.

Um método útil de validação seria verificar se há números inválidos no arquivo e exibir a lista resultante:



[me @ linuxbox ~] $ grep -Ev '^\([0-9]{3}\) [0-9]{3}-[0-9]{4}$'

lista telefônica.txt (292) 108-518

(129) 44-1379

[me @ linuxbox ~] $

[me @ linuxbox ~] $ grep -Ev '^\([0-9]{3}\) [0-9]{3}-[0-9]{4}$'

lista telefônica.txt (292) 108-518

(129) 44-1379

[me @ linuxbox ~] $


Aqui usamos o -v opção para produzir uma correspondência inversa, de modo que apenas exibamos as linhas da lista que não correspondam à expressão especificada. A própria expressão inclui os metacaracteres âncora em cada extremidade para garantir que o número não tenha caracteres extras em nenhuma das extremidades. Essa expressão também requer que os parênteses estejam presentes em um número válido, ao contrário de nosso exemplo de número de telefone anterior.


Top OS Cloud Computing na OnWorks: