Hallo, On Sat, 28 Jun 2003, Jan Trippler schrieb:
On Sam, 28 Jun 2003 at 00:40 (+0200), David Haller wrote: [...]
echo "$file" | sed 's/.*/([^/]*)$/\1/' echo "$file" | sed 's//[^/]*$//'
echo "$file" | sed 's#.*/([^/]*)$#\1#' echo "$file" | sed 's#/[^/]*$##'
ist IMHO übersichtlicher (nicht so viele Backslashes und man sieht besser, wo der Slash tatsächlich als Zeichen gebraucht wird)
Ack.
und außerdem funktioniert die dirname-Variante nicht, wenn kein Pfad existiert: jan@p4mobil:~/tmp> file=bash jan@p4mobil:~/tmp> echo "$file" | sed 's#/[^/]*$##' ^ 's/\//' ;) bash
Mir fällt im Moment auch keine sed-only-Variante ein, die das abfangen könnte. Dir? ;-)
Ja. *GRINS* SHELLPROMPT$ for f in /dir/file dir/file /file file; do echo "$f" | sed '/^/[^/]*$/{s#.*#/#;b;};///{s#/[^/]*$##;b;};/^[^/]*$/{s#.*#.#;}'; done /dir dir /