ubuntuusers.de

Sed: String mit Wildcard ersetzen

Status: Ungelöst | Ubuntu-Version: Ubuntu 11.04 (Natty Narwhal)
Antworten |

Unix_Samurai

Anmeldungsdatum:
10. Oktober 2008

Beiträge: 661

Hi.

Ich will die Strings

1
2
3
/2000
/1999
/1998

und ähnliche

durch

1
/

ersetzen. Dazu wollte ich eigentlich dies nutzen

1
sed 's/\/*/\//'

Also einen Slash, welcher zuvor mit einem Backslash entreserviert wurde, gefolgt von einem Sternchen wodurch ich mir erhoffe 2000, 1999 usw zu erwischen, welches dann alles gemeinsam wieder durch einen Slash ersetzt wird. Funktioniert so aber nicht. Ich bin dankbar für eure Ideen.

MfG

Keba Team-Icon

Ehemalige
Avatar von Keba

Anmeldungsdatum:
24. Juli 2007

Beiträge: 3802

Hallo,

Sed nutzt keine Bash-Wildcards, sondern Reguläre Ausdrücke. * bedeutet, beliebig viele Wiederholungen des vorangegangen Ausdruckes. Da . für einen beliebigen Buchstaben gilt, hilft dir: sed 's/\/.*/\//'.

Kleiner Tipp am Rande: Wenn du mit / arbeitest, empfiehlt es sich ein anderes Zeichen als Trenner zu benutzen: sed 's#/.*##

Grüße, Keba.

rklm Team-Icon

Projektleitung

Anmeldungsdatum:
16. Oktober 2011

Beiträge: 13209

Keba schrieb:

Kleiner Tipp am Rande: Wenn du mit / arbeitest, empfiehlt es sich ein anderes Zeichen als Trenner zu benutzen: sed 's#/.*##

Ja, aber hier sed 's#/.*#/#. Der Slash sollte erhalten bleiben, soweit ich das verstanden habe. Möglicherweise ist auch dies hier besser: sed 's#/[0-9]*#/#

Ciao

robert

Keba Team-Icon

Ehemalige
Avatar von Keba

Anmeldungsdatum:
24. Juli 2007

Beiträge: 3802

rklm schrieb:

Keba schrieb:

Kleiner Tipp am Rande: Wenn du mit / arbeitest, empfiehlt es sich ein anderes Zeichen als Trenner zu benutzen: sed 's#/.*##

Ja, aber hier sed 's#/.*#/#

Ah ja, natürlich ☺

Antworten |