Я использую ${parameter#word}
и ${parameter%word}
чтобы удалить префикс и постфикс строки.
$ x=2012-hello.jpg
$ y=${x#*-}
$ z=${y%.*}
$ echo $z
hello
Как я могу сделать их сразу, а не два.
Я использую ${parameter#word}
и ${parameter%word}
чтобы удалить префикс и постфикс строки.
$ x=2012-hello.jpg
$ y=${x#*-}
$ z=${y%.*}
$ echo $z
hello
Как я могу сделать их сразу, а не два.
Это невозможно при расширении параметра, но возможно при сопоставлении с регулярным выражением:
x=2012-hello.jpg
[[ $x =~ .*-(.*)\.jpg ]] && echo ${BASH_REMATCH[1]}
Если вы согласны с использованием sed
вместо расширения параметра:
x=2012-hello.jpg
$ z="$(sed -e 's/.*-\(.*\)\..*/\1/' <<<"$x")"
$ echo "$z"
hello