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

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

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

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

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

Ниже 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