Re: Email-Adressen aus MySQL-Dump extrahieren
Am Sa, 18 Sep 2010 12:47:10 CEST schrieb Juergen L:
Die gibt es mit sicherheit
Was ist "die"?
Oeffe einfach den dump
Wenn du ein Feld mit Email-Adressen meinst, dann ist dem leider nicht so. Schau zB hier: http://www.euroyage.org/xicoeatl-75 Da gibt es ein Schema "E-Mail:" am Ende eines Rahmens. Im Dump sieht das dann etwa so aus: </table>\n <table cellpadding=\"5\" border=\"0\" width=\"100%\">\n <tbody>\n <tr>\n <td class=\"grey\">\n <p class=\"fliess\"><b>E-Mail:</b> <a href=\"mailto:patricia@bla.tld\">patricia@bla.tld</a> <br />\n <b>Internet:</b> <a href=\"http://www.patriciacaicedo.com/\" target=\"_blank\">www.patriciacaicedo.com</a></p>\n </td>\ Es könnte aber auch nicht mit "mailto" geschrieben sein. Al -- 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
Al Bogner schrieb:
Am Sa, 18 Sep 2010 12:47:10 CEST schrieb Juergen L:
Die gibt es mit sicherheit
Was ist "die"?
Oeffe einfach den dump
Wenn du ein Feld mit Email-Adressen meinst, dann ist dem leider nicht so.
Schau zB hier: http://www.euroyage.org/xicoeatl-75
Da gibt es ein Schema "E-Mail:" am Ende eines Rahmens.
Im Dump sieht das dann etwa so aus:
</table>\n <table cellpadding=\"5\" border=\"0\" width=\"100%\">\n <tbody>\n <tr>\n <td class=\"grey\">\n <p class=\"fliess\"><b>E-Mail:</b> <a href=\"mailto:patricia@bla.tld\">patricia@bla.tld</a> <br />\n <b>Internet:</b> <a href=\"http://www.patriciacaicedo.com/\" target=\"_blank\">www.patriciacaicedo.com</a></p>\n </td>\
Es könnte aber auch nicht mit "mailto" geschrieben sein.
Al
Hi, wie hier ja sicher schon auffiel, perl ist nicht mein Ding (das soll keine Herabsetzung sein, der Mangel liegt bei mir ;-) ), ich würde mit sed/grep/sort folgendes machen (eine Zeile) sed -e 's/[^@.[:alnum:]_-]/\n/g' <file | grep "^[[:alnum:]._-]*@" | sort -u das sollte alle Sonderzeichen, die in E-Mail-Adressen nicht vorkommen dürfen, zu Zeilentrennern machen, dann davon nur die Zeilen ausgeben, die bis zum Klammeraffen gültige Namen darstellen (ich gehe mal davon aus, dass für Mails nur alphanumeric, "._-" erlaubt sind, fall ich was vergessen habe, halt in beide regex einfügen). Doppelungen sollten gelöscht werden. Funzt zumindest sofort mit Deinem Beispiel. cu jth -- 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 Mo, 20 Sep 2010 09:20:12 CEST schrieb Joerg Thuemmler:
Al Bogner schrieb:
Am Sa, 18 Sep 2010 12:47:10 CEST schrieb Juergen L:
Die gibt es mit sicherheit
Was ist "die"?
Oeffe einfach den dump
Wenn du ein Feld mit Email-Adressen meinst, dann ist dem leider nicht so.
Schau zB hier: http://www.euroyage.org/xicoeatl-75
Da gibt es ein Schema "E-Mail:" am Ende eines Rahmens.
Im Dump sieht das dann etwa so aus:
</table>\n <table cellpadding=\"5\" border=\"0\" width=\"100%\">\n <tbody>\n <tr>\n <td class=\"grey\">\n <p class=\"fliess\"><b>E-Mail:</b> <a href=\"mailto:patricia@bla.tld\">patricia@bla.tld</a> <br />\n <b>Internet:</b> <a href=\"http://www.patriciacaicedo.com/\" target=\"_blank\">www.patriciacaicedo.com</a></p>\n </td>\
Es könnte aber auch nicht mit "mailto" geschrieben sein.
Al
Hi,
wie hier ja sicher schon auffiel, perl ist nicht mein Ding (das soll keine Herabsetzung sein, der Mangel liegt bei mir ;-) ), ich würde mit sed/grep/sort folgendes machen (eine Zeile)
sed -e 's/[^@.[:alnum:]_-]/\n/g' <file | grep "^[[:alnum:]._-]*@" | sort -u
Danke, ich hatte das probiert: cat sql | sed -e "s/ /\n/g" | grep "@" | grep -v ^@ | sort -u > aaa.txt Wenn ich das nun zusammenfüge, eventuell nicht optimal, dann ist es schon fast perfekt cat sql | \ sed -e "s/ /\n/g" | grep "@" | grep -v ^@ | \ sed -e 's/[^@.[:alnum:]_-]/\n/g' | \ grep "^[[:alnum:]._-]*@"| grep -v ^@ | \ tr '[[:upper:]]' '[[:lower:]]' | sort -u > bbb.txt So was bleibt noch übrig: n@font-face n@page n@text n@uri
das sollte alle Sonderzeichen, die in E-Mail-Adressen nicht vorkommen dürfen, zu Zeilentrennern machen, dann davon nur die Zeilen ausgeben, die bis zum Klammeraffen gültige Namen darstellen (ich gehe mal davon aus, dass für Mails nur alphanumeric, "._-" erlaubt sind, fall ich was vergessen habe, halt in beide regex einfügen). Doppelungen sollten gelöscht werden. Funzt zumindest sofort mit Deinem Beispiel.
Mein Beispiel ist problematisch, da einerseits im Mail auf Zeilen umbrochen wurde, und es auch Adressen onne maito gibt. Aber wie oben schon erwähnt, das Ziel ist fast erreicht und wenn ein paar Mails dann wegen ungültiger Email-Adresse verschickt werden können, ist das auch nicht so tragisch. Al -- 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 Mo, 20 Sep 2010 12:28:08 CEST schrieb Al Bogner:
Am Mo, 20 Sep 2010 09:20:12 CEST schrieb Joerg Thuemmler:
Al Bogner schrieb:
Am Sa, 18 Sep 2010 12:47:10 CEST schrieb Juergen L:
Die gibt es mit sicherheit
Was ist "die"?
Oeffe einfach den dump
Wenn du ein Feld mit Email-Adressen meinst, dann ist dem leider nicht so.
Schau zB hier: http://www.euroyage.org/xicoeatl-75
Da gibt es ein Schema "E-Mail:" am Ende eines Rahmens.
Im Dump sieht das dann etwa so aus:
</table>\n <table cellpadding=\"5\" border=\"0\" width=\"100%\">\n <tbody>\n <tr>\n <td class=\"grey\">\n <p class=\"fliess\"><b>E-Mail:</b> <a href=\"mailto:patricia@bla.tld\">patricia@bla.tld</a> <br />\n <b>Internet:</b> <a href=\"http://www.patriciacaicedo.com/\" target=\"_blank\">www.patriciacaicedo.com</a></p>\n </td>\
Es könnte aber auch nicht mit "mailto" geschrieben sein.
Al
Hi,
wie hier ja sicher schon auffiel, perl ist nicht mein Ding (das soll keine Herabsetzung sein, der Mangel liegt bei mir ;-) ), ich würde mit sed/grep/sort folgendes machen (eine Zeile)
sed -e 's/[^@.[:alnum:]_-]/\n/g' <file | grep "^[[:alnum:]._-]*@" | sort -u
Danke, ich hatte das probiert:
cat sql | sed -e "s/ /\n/g" | grep "@" | grep -v ^@ | sort -u > aaa.txt
Wenn ich das nun zusammenfüge, eventuell nicht optimal, dann ist es schon fast perfekt
cat sql | \ sed -e "s/ /\n/g" | grep "@" | grep -v ^@ | \ sed -e 's/[^@.[:alnum:]_-]/\n/g' | \ grep "^[[:alnum:]._-]*@"| grep -v ^@ | \ tr '[[:upper:]]' '[[:lower:]]' | sort -u > bbb.txt
So was bleibt noch übrig: n@font-face n@page n@text n@uri
Ganz vergessen dazu zu schreiben, dass man natürlich noch nach dem Punkt "greppen" könnte. | grep "\." Aber vielleicht kann nun wer das "schöner" formulieren Al -- 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 (2)
-
Al Bogner
-
Joerg Thuemmler