sed: zwischen XXX und YYY in einer Zeile alles loeschen
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 ? thx Ekkard
Hallo, 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//' echo 'blablaXXXsss ssssYYYblabla' \ | sed 's/\(.*\)XXX.*YYY\(.*\)/\1\2/' -dnh -- Gericom: Geriatrischer Computer - gehört nächsten Monat zum alten Eisen -- Ralf Döblitz
* 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. 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? ekkard
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"
Am Mittwoch, 17. Dezember 2003 22:37 schrieb Ekkard Gerlach:
* David Haller schrieb:
Am Wed, 17 Dec 2003, Ekkard Gerlach schrieb:
wie lösche ich alle Zeichen EINSCHLIEßLICH XXX und YYY ? ^^^^^^^^^^^^^^
echo 'blablaXXXsss ssssYYYblabla' \
| sed 's/\(.*\)XXX.*YYY\(.*\)/\1\2/' [...] Beide Beispiele löschen aber die XXX und YYY mit! Wie kann ich die XXX und YYY erhalten?
Ich dachte, das wolltest Du? Wenn Du sie behalten willst, dann musst Du sie mit in die Gruppen nehmen: echo 'blablaXXXsss ssssYYYblabla' \ | sed 's/\(.*XXX\).*\(YYY.*\)/\1\2/' Beachte aber, dass reguläre Ausdrücke gierig sind. Das Muster .* zwischen den Klammern greift sich alles bis zum _letzten_ YYY in der Zeile, jedes Muster YYY dazwischen ist mit weg: jan@roland:~/tmp> echo 'blablaXXXsss sYYYsssYYYblabla' | \ sed 's/\(.*XXX\).*\(YYY.*\)/\1\2/' blablaXXXYYYblabla Wenn die Muster XXX und YYY eindeutig sind, passt es aber. Jan
participants (3)
-
David Haller
-
Ekkard Gerlach
-
Jan.Trippler@t-online.de