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

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

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

SomeText.MoreText.Whatever.1.2.3.4-branch.ext

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

1.2.3.4-branch.ext

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

2 Solutions collect form web for “Найдите первое число, затем верните оставшуюся часть строки”

С помощью 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) оболочка очень медленная).

  • Сравните несколько файлов с файлом ref и распечатайте, если это соответствует
  • Обработка таблицы с разделенными запятыми значениями в разных столбцах
  • извлечение поля даты из строк
  • Сложенные записи в столбцы
  • Печать определенных полей каждой строки до тех пор, пока не будет обнаружен маркер, а затем напечатайте целые строки до конца файла
  • Как запустить скрипт для получения определенного содержимого файла
  • Сортировка по 2 полям в ksh
  • Получить определенную строку ниже строки grepped
  • Могу ли я преобразовывать поля в XML в теги с помощью xmlstarlet?
  • Делимит меняется с помощью полей
  • Отображать строки между текстом с помощью grep
  • Linux и Unix - лучшая ОС в мире.