Frage an die sed Profis

Antworten
Nachricht
Autor
Seddist

Frage an die sed Profis

#1 Beitrag von Seddist » 15. Nov 2007 18:33

Hallo,

folgendes Szenario: Ich habe eine ldif Datei mit Einträgen in folgendem Format:

Code: Alles auswählen

dn: cn=Vorname Nachname,mail=irgendein.name@somwhere.de
givenname: vorname
sn: nachname
u.s.w
So, nun würde ich gerne die jeweils erste Zeile so manipulieren, daß der mailteil komplett ersetzt wird durch etwas wie: ou=adressbuch,dc=example,dc=com,
sprich die erste Zeile jedes eintragen dann so aussähe:

Code: Alles auswählen

dn: cn=Vorname Nachname,ou=adressbuch,dc=example,dc=com
Ist das überhaupt möglich? grep scheidet schonmal aus, da dann ja der Rest der Einträge verloren ginge. Mit sed kann ich zwar auch nach ^dn filtern, kann dann aber nicht mehr ersetzen, da ich den ersten Teil (vor dem mail=) ja nicht anfassen möchte. Aber evtl. gibt es hier ja einen regex Junkie, der auf Entzug ist?

Ihm möge geholfen werden.

komsomolze
Beiträge: 430
Registriert: 03. Mär 2006 23:16

#2 Beitrag von komsomolze » 15. Nov 2007 19:12

Gruppierung:

Code: Alles auswählen

sed 's@\(^dn: .*,\)mail.*@\1DeinEintrag@g'
"\1" ist die Gruppe von "dn" am Zeilenanfang bis zum Komma vor "mail".



EDIT --------------------------------------------------------------
http://de.linwiki.org/wiki/Linuxfibel_- ... euge_-_Sed
http://de.linwiki.org/wiki/Linuxfibel_- ... euge_-_Awk
Zuletzt geändert von komsomolze am 15. Nov 2007 21:03, insgesamt 1-mal geändert.
mfg komsomolze

seddist

#3 Beitrag von seddist » 15. Nov 2007 20:45

Wahnsinn, vielen Dank. Klappt sogar. Wo lernt man so etwas? Nein, das Argument mit der man page zieht nicht, die habe ich (versucht zu) [ge]lesen.

Antworten