bash – 从字符串中提取版本号

我有一个包含组件和版本号的字符串:

数据-C(KUH-small1);除法器 – 滨1.4.4;除法器 – CONF-1.3.3-W(1,16);存储彬1.5.4;存储CONF-1.5.0-W( 1);工人彬4.5.1;工人CONF-4.4.1-C(KUH)-win2

对于shell脚本,我需要提取分隔符二进制文件的版本号.所以我需要屈服:

1.4.4

这样做有什么好办法?用sed?

Kent’s answers之后,这可以工作:
grep -Po '(?<=divider-bin-)\d.\d.\d'

甚至更好:

grep -Po '(?<=divider-bin-)[^;]+'

它从divider-bin中掠过 – 直到它找到;字符.这样任何NNN.NNN. …… NNN格式将起作用(无论NN有多少块).

测试:

$echo "data-c(kuh-small1);divider-bin-1.4.4;divider-conf-1.3.3-w(1,16);storage-bin-1.5.4;storage-conf-1.5.0-w(1);worker-bin-4.5.1;worker-conf-4.4.1-c(kuh)-win2" | grep -Po '(?<=divider-bin-)[^;]+'
1.4.4
$echo "data-c(kuh-small1);divider-bin-1.4;divider-conf-1.3.3-w(1,16);storage-bin-1.5.4;storage-conf-1.5.0-w(1);worker-bin-4.5.1;worker-conf-4.4.1-c(kuh)-win2" | grep -Po '(?<=divider-bin-)[^;]+'
1.4

相关文章

用的openwrt路由器,家里宽带申请了动态公网ip,为了方便把2...
#!/bin/bashcommand1&command2&wait从Shell脚本并行...
1.先查出MAMP下面集成的PHP版本cd/Applications/MAMP/bin/ph...
1、先输入locale-a,查看一下现在已安装的语言2、若不存在如...
BashPerlTclsyntaxdiff1.进制数表示Languagebinaryoctalhexa...
正常安装了k8s后,使用kubect工具后接的命令不能直接tab补全...