Найдите первое число, затем верните оставшуюся часть строки

Как использовать Bash, как я могу найти первое число в строке, а затем взять остальную часть строки?

Например, у меня есть следующая строка –

SomeText.MoreText.Whatever.1.2.3.4-branch.ext

И я хочу закончить с этим –

1.2.3.4-branch.ext

Я нашел несколько ответов, которые предлагают, как найти числа (например, этот вопрос ), но ничего, что находит и возвращает часть строки.

С помощью grep извлечение только согласованной части ( -o ):

 grep -o '[0-9].*' 
  • [0-9] будет соответствовать первой цифре, и .* Будет соответствовать остальным

Пример:

 $ grep -o '[0-9].*' <<<'SomeText.MoreText.Whatever.1.2.3.4-branch.ext' 1.2.3.4-branch.ext 

Самый простой и доступный в большинстве оболочек POSIX:

 $ var='SomeText.MoreText.Whatever.1.2.3.4-branch.ext' $ echo "${var#"${var%%[0-9]*}"}" 1.2.3.4-branch.ext 

Таким образом, нет необходимости вызывать какую-либо внешнюю утилиту (expr, sed, awk и т. Д.), А также избегать временных затрат для вызова такой утилиты (для коротких строк, например в этом случае, для длинных строк (10's из k) оболочка очень медленная).