Ответ 1
Я думаю, вы могли бы использовать команду "dirname". Требуется ввести путь к файлу, удалить часть имени файла и вернуть путь. Например:
$ dirname "/string/to/cut.txt"
/string/to
Как вырезать последнее поле в этой строке оболочки
LINE="/string/to/cut.txt"
Итак, строка будет выглядеть так:
LINE="/string/to/"
Спасибо заранее!
Я думаю, вы могли бы использовать команду "dirname". Требуется ввести путь к файлу, удалить часть имени файла и вернуть путь. Например:
$ dirname "/string/to/cut.txt"
/string/to
Для чего стоит решение cut
:
NEW_LINE="`echo "$LINE" | rev | cut -d/ -f2- | rev`/"
Это будет работать в современных версиях Bourne, таких как Dash, BusyBox ash и т.д., а также потомки, такие как Bash, оболочка Korn и оболочка Z.
LINE="/string/to/cut.txt"
LINE=${LINE%/*}
или сохранить последнюю косую черту:
LINE=${LINE%/*}/
echo "/string/to/cut.txt" | awk -F'/' '{for (i=1; i<NF; i++) printf("%s/", $i)}'
echo $LINE | grep -o '.*/'
тоже работает.