我有一个包含组件和版本号的字符串:
数据-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