Hallo Liste. ich möchte gerne aus einem Maildir-Verzeichnis alle E-Mail-Adressen herausziehen, die in sämtlichen dort gespeicherten Mails enthalten sind, also egal ob in Signatur, Header oder im Mailbody. Hat jemand hier zufällig schon ein Skript geschrieben, welches das kann? Danke und Gruß. -- Andre Tann -- Um die Liste abzubestellen, schicken Sie eine Mail an: opensuse-de+unsubscribe@opensuse.org Um eine Liste aller verfuegbaren Kommandos zu bekommen, schicken Sie eine Mail an: opensuse-de+help@opensuse.org
ich möchte gerne aus einem Maildir-Verzeichnis alle E-Mail-Adressen herausziehen, die in sämtlichen dort gespeicherten Mails enthalten sind, also egal ob in Signatur, Header oder im Mailbody. Hat jemand hier zufällig schon ein Skript geschrieben, welches das kann?
Ohne Kenntnis, was genau ein "Maildir Verzeichnis" ist, könnte grep -w -o -E ".*\@.*\..*" * schon tun, was du willst. Gruß Dominik ps. entschuldige die PN -- Um die Liste abzubestellen, schicken Sie eine Mail an: opensuse-de+unsubscribe@opensuse.org Um eine Liste aller verfuegbaren Kommandos zu bekommen, schicken Sie eine Mail an: opensuse-de+help@opensuse.org
Am Montag, 5. März 2007 15:00 schrieb Andre Tann:
ich möchte gerne aus einem Maildir-Verzeichnis alle E-Mail-Adressen herausziehen
Das funktioniert mit Files im allgemeinen (und lässt sich bestimmt viiiiieeel eleganter schreiben): #!/usr/bin/perl -w use strict 'vars'; use English; use locale; $OUTPUT_AUTOFLUSH = 1; my @addresses; while (<>) { chomp; $ARG = lc($ARG); s/.*?([-_\w\.]+@([-_\w]+\.)+\w{2,4}).*/$1/ && push @addresses, $ARG; } my $lastaddress = ''; foreach (sort @addresses) { unless ($lastaddress eq $ARG) { print $ARG, "\n"; $lastaddress = $ARG; } } -- Viele Grüße ------------------------------------------------------------------------ Michael -- Um die Liste abzubestellen, schicken Sie eine Mail an: opensuse-de+unsubscribe@opensuse.org Um eine Liste aller verfuegbaren Kommandos zu bekommen, schicken Sie eine Mail an: opensuse-de+help@opensuse.org
Hallo, Am Mon, 05 Mär 2007, Michael Behrens schrieb:
Am Montag, 5. März 2007 15:00 schrieb Andre Tann:
ich möchte gerne aus einem Maildir-Verzeichnis alle E-Mail-Adressen herausziehen
Das funktioniert mit Files im allgemeinen (und lässt sich bestimmt viiiiieeel eleganter schreiben):
perl -ne 'use Email::Address; while(<>) { map { print->address(), "\n"; } Email::Address->parse($_); };' * Wobei das evtl. zuviele Dateien sind. Dann kann man mit ls | xargs cat | perl -ne ... oder auch mit mehreren Perls ls | xargs perl -ne ... arbeiten oder File::Find in perl verwenden, muss dann eben die Dateien selber öffnen und schließen. Den Einzeiler nach Gusto in ein Script verpacken ;) -dnh -- "I'm a doctor, not a mechanic." -- Dr Leonard McCoy "I'm a mechanic, not a doctor." -- Volker Borchert -- Um die Liste abzubestellen, schicken Sie eine Mail an: opensuse-de+unsubscribe@opensuse.org Um eine Liste aller verfuegbaren Kommandos zu bekommen, schicken Sie eine Mail an: opensuse-de+help@opensuse.org
David Haller, Montag, 5. März 2007 20:56:
Den Einzeiler nach Gusto in ein Script verpacken ;)
# perl -ne 'use Email::Address; while(<>) { map { print->address(), "\n"; } Email::Address->parse($_); };' * Can't locate Email/Address.pm in @INC (@INC contains: /usr/lib/perl5/5.8.8/i586-linux-thread-multi /usr/lib/perl5/5.8.8 /usr/lib/perl5/site_perl/5.8.8/i586-linux-thread-multi /usr/lib/perl5/site_perl/5.8.8 /usr/lib/perl5/site_perl /usr/lib/perl5/vendor_perl/5.8.8/i586-linux-thread-multi /usr/lib/perl5/vendor_perl/5.8.8 /usr/lib/perl5/vendor_perl .) at -e line 1. BEGIN failed--compilation aborted at -e line 1. Perl mag mich nicht... -- Andre Tann -- Um die Liste abzubestellen, schicken Sie eine Mail an: opensuse-de+unsubscribe@opensuse.org Um eine Liste aller verfuegbaren Kommandos zu bekommen, schicken Sie eine Mail an: opensuse-de+help@opensuse.org
Hallo, Am Mon, 05 Mär 2007, Andre Tann schrieb:
David Haller, Montag, 5. März 2007 20:56:
Den Einzeiler nach Gusto in ein Script verpacken ;)
# perl -ne 'use Email::Address; while(<>) { map { print->address(), "\n"; } Email::Address->parse($_); };' * Can't locate Email/Address.pm in @INC (@INC contains: /usr/lib/perl5/5.8.8/i586-linux-thread-multi /usr/lib/perl5/5.8.8 /usr/lib/perl5/site_perl/5.8.8/i586-linux-thread-multi /usr/lib/perl5/site_perl/5.8.8 /usr/lib/perl5/site_perl /usr/lib/perl5/vendor_perl/5.8.8/i586-linux-thread-multi /usr/lib/perl5/vendor_perl/5.8.8 /usr/lib/perl5/vendor_perl .) at -e line 1. BEGIN failed--compilation aborted at -e line 1.
Perl mag mich nicht...
Als root: cpan -i Email::Address die Defaults bei den Fragen sollten eigentlich passen. Es gibt vieles sehr praktisches, das bei SUSE nicht dabei ist. Sind ja auch so schon genug perl-Pakete. Da könnte man IMO durchaus ein paar dickere Zusammenschnüren ;) -dnh -- Wait for the ricochet... -- Deep Purple, "Child in Time" -- Um die Liste abzubestellen, schicken Sie eine Mail an: opensuse-de+unsubscribe@opensuse.org Um eine Liste aller verfuegbaren Kommandos zu bekommen, schicken Sie eine Mail an: opensuse-de+help@opensuse.org
On Monday 05 March 2007 20:56, David Haller wrote:
perl -ne 'use Email::Address; while(<>) { map { print->address(), "\n"; } Email::Address->parse($_); };' *
Ups, wozu die while-Schleife, wenn Du schon die -n Option gibst? perl -MEmail::Address -ne 'map { print $_->address(), "\n"; } Email::Address->parse($_)' Das funktioniert fast richtig. Es findet aber auch folgendes als Adresse: a@b?subject=help Ein wenig Nacharbeit ist also noch erforderlich. Torsten
Hallo, Am Die, 06 Mär 2007, Torsten Foertsch schrieb:
On Monday 05 March 2007 20:56, David Haller wrote:
perl -ne 'use Email::Address; while(<>) { map { print->address(), "\n"; } Email::Address->parse($_); };' *
Ups, wozu die while-Schleife, wenn Du schon die -n Option gibst?
Andersrum. Ich hatte es zuerst als perl -e '' ;) Also weg mit dem -n oder
perl -MEmail::Address -ne 'map { print $_->address(), "\n"; } Email::Address->parse($_)'
Das funktioniert fast richtig. Es findet aber auch folgendes als Adresse:
a@b?subject=help
$ perl -MEmail::Address -ne 'map { $t = $_->address(); $t =~ s/\?.*$//; print "$t\n"; } Email::Address->parse($_)' Das ist jetzt die einfach-Version. -dnh -- "Cynical" is a term invented by optimists to describe realists. -- Gregory Benford -- Um die Liste abzubestellen, schicken Sie eine Mail an: opensuse-de+unsubscribe@opensuse.org Um eine Liste aller verfuegbaren Kommandos zu bekommen, schicken Sie eine Mail an: opensuse-de+help@opensuse.org
participants (5)
-
Andre Tann
-
David Haller
-
Dominik Klein
-
Michael Behrens
-
Torsten Foertsch