Hallo, heute habe ich mich wohl zuviel der Sonne ausgesetzt :-( Mich beschaefitgt folgende Aufgabe: aus e-mail Adressen 'user@domain.tdl' mochte ich nur den tdl Anteil entfernen und durch eine neue tdl ersetzen. /usr/bin/expr \"$ADDR\" : '\(.*\)\.tdl$' fuehrt immer nur dazu, dass die gesamte Domain- und TDL entfernt wird. Auch mit sed komme ich nicht so richtig weiter, da ich sed nur soweit beherrsche, dass ganze Zeilen ersetzt werden, aber nicht Satzbestandteile :-( Es reicht halt, um Filter fuer rpost zu schreiben :-) Wer hat einen Loesungsansatz ? -Dieter -- Dieter Kluenter | Systemberatung BFI Rendering und Image Processing Tel: 040.64861967 | Fax: 040.64891521
Hi Dieter On Wed, Jul 04, 2001 at 08:49:45PM +0200, Dieter Kluenter wrote:
heute habe ich mich wohl zuviel der Sonne ausgesetzt :-(
;-)
Mich beschaefitgt folgende Aufgabe:
aus e-mail Adressen 'user@domain.tdl' mochte ich nur den tdl Anteil entfernen und durch eine neue tdl ersetzen.
/usr/bin/expr \"$ADDR\" : '\(.*\)\.tdl$'
fuehrt immer nur dazu, dass die gesamte Domain- und TDL entfernt wird. Auch mit sed komme ich nicht so richtig weiter, da ich sed nur soweit beherrsche, dass ganze Zeilen ersetzt werden, aber nicht Satzbestandteile :-( Es reicht halt, um Filter fuer rpost zu schreiben :-)
echo "abcde@defgh.tdl" | sed s/\.tdl$// man könnte sed jetzt noch aus ner datei füttern ... ich verrat dir jetzt auch noch warum das mit expr nicht geht, expr gibt nur einen boolschen wert zurück, also 'passt' oder 'passt net' und das ist irgendwie nicht das was du suchst. MfG. Falk
Hi jetzt führ ich schon selbstgespräche :-/ On Wed, Jul 04, 2001 at 09:16:39PM +0200, Falk Sauer wrote:
echo "abcde@defgh.tdl" | sed s/\.tdl$//
^ da gehört dann die neue tld zwischen rein, sorry hab ich vorhin unterschlagen. also nochmal im Ganzen: sed s/daswaszuersetzenist/daswasdafürhinsoll/ quelldatei > zieldatei MfG. Falk
* Falk Sauer schrieb am 04.Jul.2001:
ich verrat dir jetzt auch noch warum das mit expr nicht geht, expr gibt nur einen boolschen wert zurück, also 'passt' oder 'passt net' und das ist irgendwie nicht das was du suchst.
Falsch! expr kann sehr wohl auch einen String zurückgeben: $ expr "Teststring" : "Test\(.*\)$" string Bernd -- Bitte die Etikette beachten: http://home.t-online.de/~f.walle/etikette.html Bitte Realnamen angeben, kein Vollquoting, kein Html, PGP oder Visitenkarten benutzen. Signatur mit "-- " abtrennen, bei Antworten "Re: " voranstellen, sonst nichts. |Zufallssignatur 4
On Mit, 04 Jul 2001 at 20:49 (+0200), Dieter Kluenter wrote:
aus e-mail Adressen 'user@domain.tdl' mochte ich nur den tdl Anteil entfernen und durch eine neue tdl ersetzen.
Du hast schuld! ;-) Bei mir klappt: echo "Adresse (name@domain.tld) ersetzen" | \ sed 's/^\([^@]*@[^.]*\.\)\([[:alnum:]]*\)\(.*\)$/\1neu\3/' Raus kommt: echo "Adresse (name@domain.neu) ersetzen" | \ Jan
On Mit, 04 Jul 2001, Dieter Kluenter wrote:
aus e-mail Adressen 'user@domain.tdl' mochte ich nur den tdl Anteil entfernen und durch eine neue tdl ersetzen.
echo "$ADR" | sed 's/\.tld$/\.de/' echo "${ADR//%.tld/.de}" Das $ im Muster fuer sed spezifiziert das Zeilenende, das % im Muster fuer die bash das nur der letzte Ausdruck ("non-greedy") ersetzt werden soll. Letzteres bash-spezifisch ist, aber wenn du die eh verwendest und das script nicht portabel sein muss... Vergiss dann aber nicht #!/bin/bash statt #!/bin/sh in die erste Zeile zu schreiben ;) -dnh -- 41: Internet Das von President Gates erfundene Computernetz. (Kristian Köhntopp)
participants (5)
-
B.Brodesser@t-online.de
-
David Haller
-
Dieter Kluenter
-
Falk Sauer
-
Jan.Trippler@t-online.de