Batch file 相当于sed命令的Windows cmd
我正试图编写一个cmd脚本,从Batch file 相当于sed命令的Windows cmd,batch-file,cmd,Batch File,Cmd,我正试图编写一个cmd脚本,从java-fullversion命令解析java版本。我可以检索这样的版本:1.6.0\u 45,1.7.0\u 60,1.8.0\u 212,11.0.4。我想返回版本为6,7,11。正如你所看到的,并不是所有这些都出现在第一个点之前 我发现以下sed命令有效,并希望了解与windows cmd等效的命令: sed '/^1\./s///' 这有几个部分,其中有些部分做起来不太好: 在变量中获取Java的输出 for /f tokens^=2^ delims^=
java-fullversion
命令解析java版本。我可以检索这样的版本:1.6.0\u 45
,1.7.0\u 60
,1.8.0\u 212
,11.0.4
。我想返回版本为6
,7
,11
。正如你所看到的,并不是所有这些都出现在第一个点之前
我发现以下sed命令有效,并希望了解与windows cmd等效的命令:
sed '/^1\./s///'
这有几个部分,其中有些部分做起来不太好:
for /f tokens^=2^ delims^=^" %%v in ('java -fullversion 2^>^&1') do set "version=%%v"
这只保留引号之间的部分,在我的例子中是11.0.4+11
sed
类部件,非常简单:
if "%version:~0,2%"=="1." set version=%version:~2%
基本上只是“如果前两个字符是1.
,请将它们切掉”
开始切断所有内容:
for /f "tokens=1 delims=." %%v in ("%version%") do set version=%%v
这再次使用for/f
进行解析和标记化,并且只保留第一个标记"$(java -fullversion 2>&1)" -replace '.*?([\d.]+).*','$1' -replace '^1\.'
# ^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^
# Invoke Java and Replace everything but the sed equivalent
# capture stderr version
@Martin可能重复,但这并不是这个问题的真正答案。这是关于尝试执行与
cmd
中的特定sed
命令相同的操作,而不是查找执行此操作的其他工具。