我试图在awk中解析两组不同的数字,这样我就可以将它们与包版本进行比较,看看是否需要完成升级或现在。
由于安装文件标记为VMwareTools-8.6.11-1310128.tar.gz
和版本检查应用程序输出
vmware-toolbox-cmd -v
8.6.11.26309 (build-1310128)
我希望能够解析8.6.11公园,例如每个开始到最后一个时期。 ,然后 - 到...,应该很简单,但我一直在努力与正则表达式。至少我认为正则表达式是实现这一目标的最佳方式。
我有这个除去数字之外的所有东西,但这不是我想要的。
echo "8.6.11.26309 (build-1310128)"| sed 's/[^0-9]*//g'
8611263091310128
您能解释一下如何找出使用哪种正则表达式吗?
答案 0 :(得分:0)
我认为你正试图解决这个问题,
$ echo "8.6.11.26309 (build-1310128)" | sed 's/^\(.*\)\..*\(-[^)]*\).*$/\1\2/g'
8.6.11-1310128
<强>解释强>
^
开始行。\(.*\)\.
捕获最后一个点字符的所有字符。但点字符未被捕获。.*
匹配任何字符零次或多次。\(-[^)]*\)
- 最多-
符号。现在,-
符号到下一个)
的所有字符都会被捕获并存储到另一个组中。.*$
- 匹配剩下的字符直到最后一个。\1\2
- 仅打印捕获的字符(即第一组和第二组中的字符)