Форум — Admin Bash: «извлечение» отсутствующей подстроки 0 0 Пусть var="my:test" и мне надо выделить все, что после ":", меня устраивает так: echo ${var#*:} Но я хочу, чтобы в случае, если var="my", возвращалась пустая строка, а не "my". Как это сделать? Ссылка
echo $var|sed -e 's/^[^:]*$/&:/' -e 's/.*:\(.*\)/\1/' Или надо на чистом bash-е ? spirit ★★★★★ (29.11.05 16:22:34 MSK) Показать ответ Ссылка
Ответ на: комментарий от spirit 29.11.05 16:22:34 MSK Да проще хочется, так я и сам умею.. :) fagot ★★★★★ (29.11.05 16:25:15 MSK) автор топика Показать ответы Ссылка
Ответ на: комментарий от fagot 29.11.05 16:25:15 MSK PS. Мне просто кажется, что сейчас придет sdio, и у него эта задача решится еще меньшей строчкой, чем та, что я привел вначале ;)) fagot ★★★★★ (29.11.05 16:31:27 MSK) автор топика Ссылка
Ответ на: комментарий от fagot 29.11.05 16:25:15 MSK echo $var | grep -q ':' && result=${var#*:} || result="" sdio ★★★★★ (29.11.05 16:33:08 MSK) Показать ответ Ссылка
Ответ на: комментарий от sdio 29.11.05 16:33:08 MSK Хм, способ конечно грубоватый... Ясно, спасибо :) fagot ★★★★★ (29.11.05 16:40:50 MSK) автор топика Ссылка
>если var="my", возвращалась пустая строка, а не "my" v="$var:" ; v=${var#*:} ; echo ${v%:} или test "$var" = "${var#*:} && echo || echo v=${var#:} DonkeyHot ★★★★★ (29.11.05 18:39:34 MSK) Показать ответ Ссылка
Ответ на: комментарий от DonkeyHot 29.11.05 18:39:34 MSK Ошибся. test "$var" = "${var#*:} && echo || echo ${var#*:} DonkeyHot ★★★★★ (29.11.05 18:41:13 MSK) Ссылка
Ещё один вариант: shopt -s extglob ; echo ${var/*([^:])?(:)/} DonkeyHot ★★★★★ (29.11.05 18:47:47 MSK) Ссылка