(61) 3223-3000

Fale conosco

 

lista.txt—-+

|

\/

 

justajksjkjdkfl

asdfdfd

12,,,,,,,,fulano@detal.com.br,,,,,

12,,,,,,,,fulano@detal.com.br,,,,,

13,,,,,,,,,,,elderbandai@bandai.com.br,,,,,,,,

13,,,,,,,,,,,elderbandai@bandai.com.br,,,,,,

14,,,,,,,flanders@ned.com,,,,,,,,,

14,,,,,,,flanders@ned.com,,,,,,,,,

18,,,,,,,mariaprimeira@louca.com.br,,,,,,,

klsakf()****######

Como fazer isso deixando somente os e-mails, ordenados por ordem alfabética e retirando os repetidos? Teremos que fazer uma filtragem utilizando uma série de comandos, para isso vamos utilizar inicialmente o comando sed deixando apenas as linhas que contenham endereços de e-mail:

$ sed ‘/@/!d’ lista.txt

A saída com o sed será:

12,,,,,,,,fulano@detal.com.br,,,,,

12,,,,,,,,fulano@detal.com.br,,,,,

13,,,,,,,,,,,elderbandai@bandai.com.br,,,,,,,,

13,,,,,,,,,,,elderbandai@bandai.com.br,,,,,,

14,,,,,,,flanders@ned.com,,,,,,,,,

14,,,,,,,flanders@ned.com,,,,,,,,,

18,,,,,,,mariaprimeira@louca.com.br,,,,,,,

Repare que todas as linhas com palavras que não eram e-mails foram removidas, vamos adicionar mais um filtro redirecionando a saída do primeiro comando para o comando que removerá os números no inicio de cada linha:

$ sed ‘/@/!d’ lista.txt

e a nova saida:

,,,,,,,,fulano@detal.com.br,,,,,

,,,,,,,,fulano@detal.com.br,,,,,

,,,,,,,,,,,elderbandai@bandai.com.br,,,,,,,,

,,,,,,,,,,,elderbandai@bandai.com.br,,,,,,

,,,,,,,flanders@ned.com,,,,,,,,,

,,,,,,,flanders@ned.com,,,,,,,,,

,,,,,,,mariaprimeira@louca.com.br,,,,,,,

Sem os números o que falta agora são as vírgulas, facilmente retiradas adicionando o seguinte:

$ sed ‘/@/!d’ lista.txt | sed ‘s/^[0-9][0-9]//g’ | sed ‘s/,//g’

então teremos:

ulano@detal.com.br

fulano@detal.com.br

elderbandai@bandai.com.br

elderbandai@bandai.com.br

flanders@ned.com

flanders@ned.com

mariaprimeira@louca.com.br

Pronto, agora temos a lista quase terminada, faltando apenas retirar os e-mails repetidos e ordená-los alfabeticamente, vamos fazer isso colocando mais dois comandos que são o sort e o uniq:

$ sed ‘/@/!d’ lista.txt | sed ‘s/^[0-9][0-9]//g’ | sed ‘s/,//g’ | sort | uniq

finalmente a saida desejada…

elderbandai@bandai.com.br

flanders@ned.com

fulano@detal.com.br

mariaprimeira@louca.com.br

Há uma infinidade de usos e combinações para o sed e outros comandos que filtram strings de texto no linux muito úteis em situações como essas, espero que esse exemplo acima o ajude no dia a dia com o sed que é uma poderosa ferramenta de filtragem.

 

Bom no mais é só, até o próximo post.

 

Facebook

Twitter

Redes Sociais