假设我有一个看起来像这样的字符串:
nvidia-utils-beta 334.16-1
lib32-nvidia-utils-beta 334.16.1-2
Run Code Online (Sandbox Code Playgroud)
我想提取它所以它会产生:
334.16
334.16.1
Run Code Online (Sandbox Code Playgroud)
..分别.
怎么样?
ps我更喜欢非cut|cut解决方案.
当我看到"提取"时,grep首先出现:
grep -Po '\S*(?=-\d+$)' file
Run Code Online (Sandbox Code Playgroud)
要么
grep -Po '\s\K[^-]*' file
Run Code Online (Sandbox Code Playgroud)
测试:
kent$ echo "nvidia-utils-beta 334.16-1
lib32-nvidia-utils-beta 334.16.1-2"|grep -Po '\S*(?=-\d+$)'
334.16
334.16.1
kent$ echo "nvidia-utils-beta 334.16-1
lib32-nvidia-utils-beta 334.16.1-2"|grep -Po '\s\K[^-]*'
334.16
334.16.1
Run Code Online (Sandbox Code Playgroud)