Filtern

Vom einfachen Programm zum fertigen Debian-Paket, Fragen rund um Programmiersprachen, Scripting und Lizenzierung.
Antworten
Benutzeravatar
HelsAett
Beiträge: 749
Registriert: 18.03.2003 18:25:00

Filtern

Beitrag von HelsAett » 26.01.2007 11:34:32

Hallo @ll

könnt Ihr mir Helfen

ich möchte aus einer ldif Datei des Ldap`s gerne alle E-Mails ausfiltern, die in der Datei enthaltenen Einträge sehen so aus

uniqueMember: uid=mailuser@mailaccount.de,ou=NewsletterPresse,ou=zentral_prod,
uniqueMember: uid=mailuser1@mailacount1.de,ou=NewsletterPresse,ou=zentral_prod,
.....
usw.

mit einem grep @ datei.ldif > mail.txt komme ich nicht weit, wie kann ich in den mitteilen, das er alle was ein @ enthält und mit = anfängt und , danach aufhört ausfiltern

ist wahrscheinlich nur eine kleine pine aber ich weiss nicht wie sich die zusammensetzen soll.

Vielen Dank für Eure Mühe und Hilfe

Gruß HelsAett

Benutzeravatar
knecht
Beiträge: 1214
Registriert: 08.01.2004 15:33:44
Wohnort: Berlin
Kontaktdaten:

Beitrag von knecht » 26.01.2007 12:05:36

Code: Alles auswählen

myself@lapslave:~$ echo "uniqueMember: uid=mailuser@mailaccount.de,ou=NewsletterPresse,ou=zentral_prod" | cut -d" " -f2 | cut -d"=" -f2 | cut -d"," -f1
mailuser@mailaccount.de
myself@lapslave:~$ 
So könntest du es machen, ist nur nicht sehr elegant, aber es geht

gruss
Sebastian
_________________________________________________
Linux HowTo's, Programmierung, Wallpapers und 3D:
http://www.neoBerserker.de

Benutzeravatar
Duff
Beiträge: 6321
Registriert: 22.03.2005 14:36:03
Wohnort: /home/duff

Beitrag von Duff » 26.01.2007 12:11:00

Du könntest das ganze z.B. so machen:

Code: Alles auswählen

cat file | awk '/@/' | awk -F "[=|,]" '{print $2}'
Das Ergebnis sieht dann so aus:

Code: Alles auswählen

mailuser1@mailaccount.de
mailuser2@mailacount1.de
mailuser3@mailaccount.de
mailuser4@mailacount1.de
Oh, yeah!

Benutzeravatar
knecht
Beiträge: 1214
Registriert: 08.01.2004 15:33:44
Wohnort: Berlin
Kontaktdaten:

Beitrag von knecht » 26.01.2007 12:35:30

So wärs dann eleganter, mir war nur der Syntax von awk nicht mehr im Kopf
_________________________________________________
Linux HowTo's, Programmierung, Wallpapers und 3D:
http://www.neoBerserker.de

fuzzy
Beiträge: 1021
Registriert: 04.10.2003 12:15:52

Beitrag von fuzzy » 26.01.2007 16:42:39

Code: Alles auswählen

awk -F "[=|,]" '/@/ {print $2}' file
...minimale Zusammenfassung von Duffs Zeile.

Danke an Duff, denn ich hatte das mit den "mehrfachen Trennzeichen" noch nie probiert. :wink:

Gruß fuzzy

Benutzeravatar
Duff
Beiträge: 6321
Registriert: 22.03.2005 14:36:03
Wohnort: /home/duff

Beitrag von Duff » 27.01.2007 15:28:31

fuzzy hat geschrieben:

Code: Alles auswählen


awk -F "[=|,]" '/@/ {print $2}' file 
Da hast du natürlich recht. Es geht auch noch kürzer (da war ich aber jetzt so schnell nicht drauf gekommen :-))

Hatte dies meine ich mal in diesem Buch hie gelesen.
Oh, yeah!

Antworten