# "sed" und Regulärer Ausdruck



## the-cR (27. März 2004)

Hallo,

ich habe mich entschlossen, diese Frage ins Linux Forum zu stellen, obwohl ein Regulärer Ausdruck natürlich auch zu den Codern gehört. Nichts desto trotz:

Nehmen wir an, der Inhalt der Date text.txt sei:

"http://www.foo.com/mysub/mypage.html"

- also eine URL.

Nun möchte ich mit "sed" den html Dateinamen rausfiltern/löschen, sodass ich diese Zeile erhalte:

"http://www.foo.com/mysub/"

Ich dachte eigentlich, es sollte so funktionieren:


```
sed -n 's#/[^/]*$#/#p' test.txt
```

tut es aber nicht, wie es bei Regulären Ausdrücken so üblich ist  Mein Versuch sollte also folgendes tun:

Suche nach dem Zeichen "/", danach darf das Zeichen "/" nicht mehr vorkommen, jedoch alle anderen Zeichen kein, ein- oder mehrmals, und das bis zum ende der Zeile. Dieses ganze, wenn gefunden, ersetze durch "/".

Nunja, wie ich schon erwähnte, funktioniert es nicht. Ich würde mich sehr freuen, wenn ihr mir diesbezüglich ein paar Tipps geben könntet. Nicht unbedingt, warum meine Zeile nicht funktioniert, sondern vorrangig, wie ich den Dateinamen-Anteil aus der obigen URL mit dem Befehl "sed" entfernen kann (natürlich ist die URL nicht immer dieselbe ;-) )

P.S. gibt es vielleicht noch eine andere Möglichkeit, z.B. einen ganz anderen Befehl um dies zu erreichen?


Vielen Dank!


----------



## hulmel (27. März 2004)

```
sed -e 's/.*\///' text.txt
```
Sollte tun. Oder Du nimmst "basename".


----------



## the-cR (28. März 2004)

Danke für Deine Antwort, aber das macht doch genau das Gegenteil von dem, was ich wollte-  ich möchte nicht den Namen der Datei haben, sondern genau diesen entfernen, sodass ich nur die URL ohne Dateinamen habe, also von:

http://www.foo.org/subdir/page.html

nach:

http://www.foo.org/subdir/

Ne Ahnung, wie dann der Reguläre Ausdruck aussehen muss?


Vielen Dank


----------



## hulmel (28. März 2004)

So:
	
	
	



```
sed -e 's/[^\/]*$//' text.txt
```
Oder "dirname".


----------

