Как удалить последний dir с sed
(нет dirname
), как это:
echo "/dir1/dir2/dir3/dir4" | sed .....
Таким образом, я добрался бы /dir1/dir2/dir3
.
sed 's,/*[^/]\+/*$,,'
Если это часть сценария оболочки, то dirname
будет определенно более понятным.
echo "/etc1/etc2/etc3/etc" | sed -e "s//[^/]*$//"
produces
/etc1/etc2/etc3
В основном отсекайте все, что находится в конце после последней косой черты и не содержит другой косой черты.
вам не нужно использовать внешние инструменты
$ a = "/ dir1 / dir2 / dir3 / dir4"
$ echo $ {a% / *}