Hallo, Am Wed, 17 Dec 2003, Ekkard Gerlach schrieb:
* David Haller schrieb:
Am Wed, 17 Dec 2003, Ekkard Gerlach schrieb:
wie lösche ich in einer Zeile zwischen XXX und YYY alle Zeichen?
z.B. blablaXXXsssssssYYYblabla -> blablaXXXYYYblabla wobei ss...ss beliebige Zeichen MIT Leerzeichen sein können. Es sind aber alles druckbare Zeichen, [:graph:] greift also.
wie lösche ich alle Zeichen EINSCHLIEßLICH XXX und YYY ? ^^^^^^^^^^^^^^!
echo 'blablaXXXsss ssssYYYblabla' \ | sed 's/XXX[^Y]*YYY//' empirisch ermittelt: das Y in der Mitte ist offenbar ein beliebiger Buchstabe, der sonst nicht vorkommen darf .. und groß geschrieben muß er auch sein, sonst kapiere ich nix.
Nein, das ist der erste Buchstabe des Endmusters. Das macht die Sache einfach eindeutiger, ein '.*' statt dem '[^Y]*' wuerde (meist) auch gehen.
echo 'blablaXXXsss ssssYYYblabla' \ | sed 's/\(.*\)XXX.*YYY\(.*\)/\1\2/' das kapiere ich ja noch ...
uff! Alle Achtung! Danke David! Beide Beispiele löschen aber die XXX und YYY mit! Wie kann ich die XXX und YYY erhalten?
Das hast du oben aber anders geschrieben! Da musst du nur die Klammern anders setzen: | sed 's/\(.*XXX\).*\(YYY.*\)/\1\2/' oder eindeutiger | sed 's/\(.*XXX\)[^Y]*\(YYY.*\)/\1\2/' Die erste Version (ohne Klammern) geht dann uebrigens nicht mehr. -dnh -- "Zieh was an, wo viel reinpasst" -- Becker zu Reggie in "Becker"