Как вырезать последнее поле в этой строке оболочки
LINE="/string/to/cut.txt"
чтобы строка выглядела так
LINE="/string/to/"
Заранее спасибо!
Для чего стоит, решение на основе cut:
cut
NEW_LINE="`echo "$LINE" | rev | cut -d/ -f2- | rev`/"
Я думаю, вы могли бы использовать команду "dirname".Он принимает на вход путь к файлу, удаляет часть имени файла и возвращает путь.Например:
$ dirname "/string/to/cut.txt" /string/to
Это будет работать в современных версиях Bourne, таких как Dash, BusyBox ash и т. Д., А также в потомках, таких как Bash, Korn shell и Z shell.
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 '.*/' тоже работает.
echo $LINE | grep -o '.*/'