как получить первое число переменных
У меня есть переменная:
STR="My horse weighs 3000 kg but the car weighs more"
STR="Maruska found 000011 mushrooms but only 001 was not with meat"
STR="Yesterday I almost won the lottery 0000020 CZK but in the end it was only 05 CZK"
Мне нужно получить номера:
3000
11
20
Вот один из способов сделать это:
Тестовое задание:
источник
sed
в конце? Кажется, что прежде, чем мы перейдем к sed, у нас уже есть результат, которого мы хотим000011
для которого вы должны удалить нули ведущих. Но вы можете упростить сопоставление,[1-9][0-9]*
которое уберет лидирующие нули с самого начала:echo $STR | grep -o -E '[1-9][0-9]*'
Если ваша реализация
grep
не имеет-o
или вы не используете Bash, вы можете сделать следующее:источник
источник
Я поместил ваши строки в массив, чтобы его можно было легко повторить для этой демонстрации.
Это использует встроенное совпадение регулярных выражений Bash.
Требуется только очень простой шаблон. Рекомендуется использовать переменную для хранения шаблона, а не включать его непосредственно в тест на совпадение. Это важно для более сложных моделей.
Я включил квадратные скобки только для того, чтобы визуально выделить цифры.
Вывод:
Чтобы получить числа без начальных нулей, самый простой способ состоит в том, чтобы вызвать преобразование в основание-10.
Подставляя это, вывод выглядит так, как вы просили:
источник
Посмотрите регулярные выражения и
man grep
.и чтобы убрать начальные нули, относитесь к нему как к числу:
источник