PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : [shell]alles ausgeben, was vorne und hinten ein leerzeichen und inner mitte ein @ hat



d@tenmaulwurf
09-12-2005, 14:20
Hi!

Ich möchte emailadressen aus einem file extrahieren.
Dazu benötige ich aber die reglären ausdrücke, um das anständig mit z.B. grep filtern zu können.
Wie kann ich diese Mailadressen schön mit kommata getrennt wieder zurückgeben?
Gibt doch bestimmt schon einen vordefinierten RE für E-Mailadressen oder?
Vor und hinter den Mailadressen sind unregelmäßig viele Leerzeichen.

Vielen Dank im voraus,

d@tenmaulwurf

d@tenmaulwurf
09-12-2005, 15:07
Habs, auch wenns unschön ist.

cat file.txt | tr [:blank:] '\n' | grep @ | tr '\n' ',' >> emailadressen.txt

Joghurt
09-12-2005, 16:18
Also die RE für soetwas wäre in etwa
/ +\([^ ]+@[^ ]+\) +/Die beiden / dienen nur dazu, dass du das erste Leerzeichen siehst

Flummi
02-01-2006, 00:17
Wenn ich richtig in der Annahme gehe, dass dein File ca. so aussieht:


mail.add1@lala.com
ladf@ladf.de
adf@adf.at
aadf
adfsaf@afa.com


Dann bringt dir dieser Einzeiler hoffentlich das gewünschte Ergebnis:

cat testfile.txt | grep @ | tr -s " " | cut -d\ -f2 | tr '\n' ',' && echo "" > emailadd.txt

mfg,
Flummi.

colo
03-01-2006, 12:31
$ egrep -o "[^ ]+@[^ ]+" deinfile | tr \\n ,


Edit um 13:37 :cool: