我想从bash中的某些字符串中提取版本号而不使用太多额外的包.到目前为止我试过了sed.
这是API:
3.81-8.1ubuntu1.1 should give : 3.81
2.68-1ubuntu2 should give : 2.68
1:1.11.3-1ubuntu2 should give : 1.11.3
Run Code Online (Sandbox Code Playgroud)
到目前为止,这是我的sed命令:
echo ... | sed -r 's/.*([0-9\.]+).*/\1/'
Run Code Online (Sandbox Code Playgroud)
然而,开场.*太贪心,尤其是最后一个案例.我已经尝试了一些.*?,并.\{-}没有任何成功.
我可以两次通过,但我宁愿学习如何在一个中完成.
这对你好吗?
grep -Po "[\d\.]*(?=-)" file
Run Code Online (Sandbox Code Playgroud)
例:
kent$ cat tt
3.81-8.1ubuntu1.1
2.68-1ubuntu2
1:1.11.3-1ubuntu2
kent$ grep -Po "[\d\.]*(?=-)" tt
3.81
2.68
1.11.3
Run Code Online (Sandbox Code Playgroud)