Предо мной постало задание написать скрипт который бы мого сортировать адреса e-mail которые хранятся в текстовом файле, по их доменах... например: rambler.ru, mail.ru... а также найти одинаковые и оставить только один из них...
>Предо мной постало задание написать скрипт который бы мого сортировать адреса e-mail
>которые хранятся в текстовом файле, по их доменах... например: rambler.ru, mail.ru...
>а также найти одинаковые и оставить только один из них...
#!/usr/bin/perl
open BLK,"<./emails.txt";
while(<BLK>){
$str=$_;
chomp($str);
foreach ($str){($uname,$domain)=split(/\@/);
$HASH{$domain}{$uname}=$uname;
}
}
for my $k1 ( sort keys %HASH ) {
for my $k2 ( sort keys %{$HASH{$k1}} ) {
print %HASH->{$k1}{$k2},"@","$k1\n";
}
}Примерно так
Если что то непонятно и т.д пиши на мыло
удачи
да можно убрать вывод значения хеша
типа так будет#!/usr/bin/perl
open BLK,"<./emails.txt";
while(<BLK>){
$str=$_;
chomp($str);
foreach ($str){($uname,$domain)=split(/\@/);
$HASH{$domain}{$uname}=$uname;
}
}
for my $k1 ( sort keys %HASH ) {
for my $k2 ( sort keys %{$HASH{$k1}} ) {
print $k2,"@","$k1\n";
}
}
>>Предо мной постало задание написать скрипт который бы мого сортировать адреса e-mail
>>которые хранятся в текстовом файле, по их доменах... например: rambler.ru, mail.ru...
>>а также найти одинаковые и оставить только один из них...
>
>#!/usr/bin/perl
> <...>
>
>Примерно так
>
>Если что то непонятно и т.д пиши на мыло
>удачиВоВкА, не обижайся, но что-то твой код не похож на PHP ;)
Можно, например, поступить так:
$eMails = array_unique(file("path/to/file"));
function cmp ($a, $b) {
list($aUser, $aHost) = explode("@", $a);
list($bUser, $bHost) = explode("@", $b);
$hostCmp = strcmp($aHost, $bHost);
if ($hostCmp != 0) return $hostCmp; else return strcmp($aUser, $bUser);
}
usort($eMails, "cmp");Теперь $eMails содержит нужным образом отсортированный массив.
PS. Не тестировал :)
Спасибачки) Шас посмотрю, может и чтото выйдет...
да согласен это не PHP но переписать саму идею можно легко
а если это надо сделать 1-2 раза и у человека есть доступ к perl
то думаю и мой вариант прокатит
cat addresses.txt | sort | uniq
на выходе отсортированные "неодинаковые" адреса
>cat addresses.txt | sort | uniq
>на выходе отсортированные "неодинаковые" адресаКрасиво, но сортировать надо не по адресам а по доменам.
>>cat addresses.txt | sort | uniq
>>на выходе отсортированные "неодинаковые" адреса
>
>Красиво, но сортировать надо не по адресам а по доменам.
Зря я наверное упираюсь :) ведь не пхп же...
Но ведь там ( в пхп) пайпы есть?
cat addr.txt|awk -F@ '{printf("%s %s\n", $2, $1)}'|sort|uniq|awk '{printf("%s@%s\n", $2, $1)}'