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
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.