Как на bash из строки выделить слово?

Добрый день хабраюди.
Столкнулся с такой проблеемой — необходимо из строки, например, "/etc/somewhere" выделять в другую перенменную первое слово с конца (до слеша).
Как такое реализовать на bash?

Заранее спасибо
  • Вопрос задан
  • 31015 просмотров
Пригласить эксперта
Ответы на вопрос 7
sledopit
@sledopit
Если оно хранится в переменной, то:
T=/etc/somewhere ; echo ${T##*/}

Если же идёт поток из файла, то sed, awk. Можно и в цикле while read LINE, но это неэффективно (sed с awk'ом вместе взятые успеют по 5-10 раз каждый отработать =) )
Ответ написан
Ramires
@Ramires
Попробуйте sed 's|.*/||'
Пример:
user@user-desktop:~$ echo /etc/somewhere | sed 's|.*/||'
somewhere
Ответ написан
@fst
echo /etc/somewhere | grep -E -o '[^/]+$'
Ответ написан
Комментировать
demimurych
@demimurych
demi@hive:~$ basename /etc/crontab
crontab
Ответ написан
Комментировать
demimurych
@demimurych
vvv=`basename /etc/crontab`; echo $vvv;
Ответ написан
Комментировать
charliez
@charliez
echo "/etc/somewhere" | awk -F"/" '{ print $3}'
Ответ написан
Porfel
@Porfel
$ foo=/etc/some/where $ bar=${foo##*/} $ echo $bar where $
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы