Мой ответ будет иметь больше контроля над тем, что вы хотите от вашей строки. Вот код того, как вы можете извлечь 12345
из вашей строки
str="someletters_12345_moreleters.ext"
str=${str#*_}
str=${str%_more*}
echo $str
Это будет более эффективно, если вы хотите извлечь что-либо, имеющее любые символы, такие как abc
или любые специальные символы, такие как _
или -
. Например: если ваша строка такая, и вы хотите все, что после someletters_
и до _moreleters.ext
:
str="someletters_123-45-24a&13b-1_moreleters.ext"
С моим кодом вы можете указать, что именно вы хотите.
Объяснение:
#*
Он удалит предыдущую строку, включая соответствующий ключ. Здесь ключ, который мы упомянули, является _
%
Будет удалена следующая строка, включая соответствующий ключ. Здесь ключ, который мы упомянули: «_more *»
Сделайте несколько экспериментов самостоятельно, и вы найдете это интересным.