Grep для числа, исключая его часть с плавающей запятой

У меня есть следующая строка

scalar TestDmaMac4.sink.udpApp[0] throughput:last 11730.559888477 

Я хочу извлечь только 11730 из этой строки, как я могу сделать это с помощью grep ? Я хочу игнорировать число после десятичной точки и нужно только цифры до десятичной точки.

(Примечание: существует последовательность {пробел} {tab} , разделяющая каждую из udpApp[0] , throughput:last и начало номера 11730 )

3 Solutions collect form web for “Grep для числа, исключая его часть с плавающей запятой”

Ниже regexp будет соответствовать любому плавающему числу в формате [0-9].[0-9] и вернет целую часть этого плавающего числа.

 $ a="scalar TestDmaMac4.sink.udpApp[0] throughput:last 11730.559888477" $ egrep -o '[0-9]+[.][0-9]' <<<"$a" |egrep -o '[0-9]+[^.]' #First grep will isolate the floating number , second grep will isolate the int part. 11730 $ perl -pe 's/(.*?)([0-9]+)(\.[0-9]+.*)/\2/' <<<"$a" #using the lazy operator ? 11730 $ sed -r 's/(.*[^0-9.])([0-9]+)(\.[0-9]+.*)/\2/' <<<"$a" #sed does not have lazy operator thus we simulate this with negation 11730 

Для тестирования я также пробовал над regexp в другой строке с числом floatting в другом месте без ведущего пространства:

 $ c="scalar throughput:last11730.559888477 TestDmaMac4.sink.udpApp[0]" $ egrep -o '[0-9]+[.][0-9]' <<<"$c" |egrep -o '[0-9]+[^.]' 11730 $ perl -pe 's/(.*?)([0-9]+)(\.[0-9]+.*)/\2/' <<<"$c" 11730 $ sed -r 's/(.*[^0-9.])([0-9]+)(\.[0-9]+.*)/\2/' <<<"$c" 11730 
 l='scalar TestDmaMac4.sink.udpApp[0] throughput:last 11730.559888477' read -r -aa <<<"$l" dc -e "${a[-1]}dX10r^dsa*la/p" echo "$l" | perl -lane 'print/\d+(?=\.\d+$)/g' 

результат

 11730 

Использование Grep:

 grep -o " [0-9]\{1,\}" 

Тестировать:

 echo "scalar TestDmaMac4.sink.udpApp[0] throughput:last 11730.559888477" | grep -o " [0-9]\{1,\}" 

Результаты:

 11730 
  • grep возвращает «Бинарный файл (стандартный ввод) соответствует« при попытке найти строковый шаблон в файле
  • как извлечь номер из строки в unix
  • Grep список для слова, которое существует в строке, и игнорировать все другие строки, которые содержат это слово
  • Как я могу получить последний номер строки уникальных команд, когда grepping мой файл истории?
  • Регулярное выражение для соответствия последовательностям буквенно-цифровых символов
  • как напечатать только часть каждой строки, которая помечается определенным символом
  • Bash для эхо-первого позиционирования каждой строки в файл с именем второго
  • извлекать символы before () с помощью grep
  • PGrep в моем скрипте оболочки: не считая самого скрипта
  • pipe ls to grep (строки против «элементов»)
  • Я хочу, чтобы grep из текстовой строки из многих файлов, как я могу запустить цикл для этого
  • Interesting Posts

    Почему 2 машины linux ведут себя по-другому с командой того же синтаксиса?

    Как изменить версию Qt, используемую TeXstudio в элементарной os Freya?

    Безопасное удаление каталога

    Существует ли самый быстрый способ отключения системы?

    Можно ли распаковать zip-файл, содержащий образ диска, а затем сохранить его на SD-карту за один шаг?

    Как I * un * установить параметр в `xkbmap`?

    Imagemagick конвертирует неправильно размеры ландшафта pdfs

    Невозможно переключить интернет-соединения без перезагрузки (Debian)

    Переключение между рабочим процессом cli и vim и другими файлами

    Где firefox получает приложения «по умолчанию» для открытия файлов?

    Создать символическую ссылку рекурсивно для изображений с уникальным именем файла, тогда как timestamp недостаточно

    Установите Vulkan в Debian

    Как сохранить файл изображения в переменной bash?

    LVS недоступна извне

    systemd с таймером как пользователь

    Linux и Unix - лучшая ОС в мире.