Использование Parameter Expansion:
$ var="fooo_barrrr"
$ echo ${var#*_}
barrrr
Чтобы изменить саму вар, var=${var#*_}
.
ПримечаниеЭтот удаляет до первого _
:
$ var="fooo_barrr_r"
$ echo ${var#*_}
barrr_r
Если вы хотите удалить до последнего, вам нужно будет использовать ##
вместо:
$ var="fooo_barrr_r"
$ echo ${var##*_}
r
См некоторые альтернативы:
С sed
:
$ sed 's/^[^_]*_//' <<< "foo_barrrr_r"
barrrr_r
С awk
:
$ awk 'gsub(/^[^_]*_/,"")1' <<< "foo_barrrr_r"
barrrr_r
С grep
:
$ grep -oP '[^_]*_\K.*' <<< "foo_barrrr_r"
barrrr_r
Во всех случаях, чтобы сохранить новое значение в той же вар, сделать var=$(command <<< "$var")
.
Что делать, если у вас есть несколько '_'? Какую часть строки вы хотите сохранить? – fedorqui