Как вырезать последнее поле из строки оболочки - PullRequest
21 голосов
/ 30 декабря 2010

Как вырезать последнее поле в этой строке оболочки

LINE="/string/to/cut.txt"

чтобы строка выглядела так

LINE="/string/to/"

Заранее спасибо!

Ответы [ 5 ]

57 голосов
/ 04 апреля 2011

Для чего стоит, решение на основе cut:

NEW_LINE="`echo "$LINE" | rev | cut -d/ -f2- | rev`/"
18 голосов
/ 30 декабря 2010

Я думаю, вы могли бы использовать команду "dirname".Он принимает на вход путь к файлу, удаляет часть имени файла и возвращает путь.Например:

$ dirname "/string/to/cut.txt"
/string/to
14 голосов
/ 30 декабря 2010

Это будет работать в современных версиях Bourne, таких как Dash, BusyBox ash и т. Д., А также в потомках, таких как Bash, Korn shell и Z shell.

LINE="/string/to/cut.txt"
LINE=${LINE%/*}

или для сохранения окончательного слеша:

LINE=${LINE%/*}/
1 голос
/ 30 декабря 2010
echo "/string/to/cut.txt" | awk -F'/' '{for (i=1; i<NF; i++) printf("%s/", $i)}'
0 голосов
/ 13 февраля 2011

echo $LINE | grep -o '.*/' тоже работает.

...