Получение номера версии после имени и расширения библиотеки в Bash

Вы можете использовать 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

1
задан 18 January 2016 в 23:29

2 ответа

Использование 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
1
ответ дан 23 May 2018 в 14:12

Это работает для приведенных вами примеров и будет работать до тех пор, пока строка ввода будет следовать шаблону .*\.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
-1
ответ дан 23 May 2018 в 14:12

Другие вопросы по тегам:

Похожие вопросы: