我正在尝试编写一个cmd脚本来解析java -fullversion
命令中的java版本。我能够检索到这样的版本:1.6.0_45
、1.7.0_60
、1.8.0_212
、11.0.4
。我想将版本返回为6
、7
、11
。正如你所看到的,并不是所有这些都出现在第一个点之前。
我找到了下面的sed命令,它可以工作,并且想知道是否等效于windows cmd:
sed '/^1\./s///'
发布于 2019-10-24 09:42:20
这有几个部分,其中一些并不是很好做:
对于/f tokens^=2^ delims^=^“%v in”('java -fullversion 2^>^&1'),请设置"version=%%v“
这只保留了引号之间的部分,在我的例子中,11.0.4+11
.
sed
-like部件非常简单:如果“%版本:~0,2%”==“1。设置version=%version:~2%
基本上,“如果前两个字符是1.
,就把它们剪掉”。
.
开始就切断了所有内容:对于/f "tokens=1 delims=.“%v(%version%)确实设置了version=%%v
这再次使用for /f
进行解析和标记,只保留第一个令牌.。
通常,现在您可能也可以使用PowerShell:
"$(java -fullversion 2>&1)" -replace '.*?([\d.]+).*','$1' -replace '^1\.'
# ^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^
# Invoke Java and Replace everything but the sed equivalent
# capture stderr version
https://stackoverflow.com/questions/58538310
复制相似问题