Вы можете использовать calc. Не установлен по умолчанию, но вы можете установить его быстро, используя следующую команду:
sudo apt-get install apcalc
После того, как вы установили, вы можете выполнить любой расчет:
$ calc 5+2
7
$ calc 5-2
3
$ calc 5*2
10
$ calc 5/2
2.5
$ calc 5^2
25
$ calc 'sqrt(2)'
1.4142135623730950488
$ calc 'sin(2)'
0.9092974268256816954
$ calc 'cos(2)'
-0.416146836547142387
$ calc 'log(2)'
~0.30102999566398119521
$ calc 'sqrt(sin(cos(log(2))))^2'
~0.81633199125847958126
$ # and so on...
[d3 ] Для получения дополнительной информации просмотрите ее calc
Использование awk:
awk -F'.so.' '{match($2,/([0-9]+\.*)+/);print substr($2, RSTART, RLENGTH)}
Примеры
$ awk -F'.so.' '{match($2,/([0-9]+\.*)+/);print substr($2, RSTART, RLENGTH)}' <<<'libpcap.so.1.8.0-PRE-GIT1'
1.8.0
$ awk -F'.so.' '{match($2,/([0-9]+\.*)+/);print substr($2, RSTART, RLENGTH)}' <<<$'libpcap.so.1.1.1\nlibusb-0.1.so.4.4.4\nlibpcap.so.1.8.0-PRE-GIT'
1.1.1
4.4.4
1.8.0
Это работает для приведенных вами примеров и будет работать до тех пор, пока строка ввода будет следовать шаблону .*\.so\.[0-9.]*.*:
grep -Po '.*\.so.\K[0-9.]*' <<<'libpcap.so.1.1.1'
Он будет соответствовать максимально возможной последовательности цифр / точек после последняя .so. подстрока, если она есть.
% grep -Po '.*\.so.\K[0-9.]*' <<<$'libpcap.so.1.1.1\nlibusb-0.1.so.4.4.4\nlibpcap.so.1.8.0-PRE-GIT'
1.1.1
4.4.4
1.8.0