从python获取java版本号

从python获取java版本号

本文介绍了从python获取java版本号的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我需要从python(或bash)获取Java版本号,例如1.5。



我会用:

  os.system('java  - 版本2>& 1 | grepjava version| cut -d\\\\-f 2')

但是,返回1.5.0_30



例如,如果数字变为1.10,则需要兼容。



我想使用cut或grep甚至sed。
它应该在一行中。

解决方案

考虑到这样的输出:

$ $ p $ $ $ $ -version
java version 1.8.0_25
Java™SE运行时环境(build 1.8.0_25-b17)
Java HotSpot™64位服务器虚拟机(构建25.25-b02,混合模式)

你可以用 awk 来获得版本号,例如:

  $ java -version 2>& 1 | awk -F [\_]'NR == 1 {print $ 2 }'
1.8.0

或者,如果您只想要前两个 -separated digits:

  $ java -version 2>& 1 | awk -F [\\。] -v OFS =。'NR == 1 {print $ 2,$ 3}'
1.8

这里, awk 将字段分隔符设置为 _ (或者),这样这行就被分割了。然后,它在第一行打印第二个字段(由 NR == 1 指示)。通过设置 OFS ,我们指出输出字段分隔符是什么,以便说 print $ 2,$ 3 打印第二个字段由第三个在之间。



要在Python中使用它,您需要正确地转义:

 >>> os.system('java -version 2>& 1 | awk -F [\\\\_] \'NR == 1 {print $ 2} \'')
1.8.0
>>> os.system('java -version 2>& 1 | awk -F [\\\\\。] -v OFS =。\'NR == 1 {print $ 2,$ 3} \'')
1.8


I need to get the java version number, for example "1.5", from python (or bash).

I would use:

os.system('java -version 2>&1 | grep "java version" | cut -d "\\\"" -f 2')

But that returns 1.5.0_30

It needs to be compatible if the number changes to "1.10" for example.

I would like to use cut or grep or even sed.It should be in one line.

解决方案

Considering an output like this:

$ java -version
java version "1.8.0_25"
Java(TM) SE Runtime Environment (build 1.8.0_25-b17)
Java HotSpot(TM) 64-Bit Server VM (build 25.25-b02, mixed mode)

You can get the version number with awk like this:

$ java -version 2>&1 | awk -F[\"_] 'NR==1{print $2}'
1.8.0

Or, if you just want the first two .-separated digits:

$ java -version 2>&1 | awk -F[\"\.] -v OFS=. 'NR==1{print $2,$3}'
1.8

Here, awk sets the field separator to either " or _ (or .), so that the line is sliced in pieces. Then, it prints the 2nd field on the first line (indicated by NR==1). By setting OFS we indicate what is the output field separator, so that saying print $2, $3 prints the 2nd field followed by the 3rd one with a . in between.

To use it in Python you need to escape properly:

>>> os.system('java -version 2>&1 | awk -F[\\\"_] \'NR==1{print $2}\'')
1.8.0
>>> os.system('java -version 2>&1 | awk -F[\\\"\.] -v OFS=. \'NR==1{print $2,$3}\'')
1.8

这篇关于从python获取java版本号的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持!

08-12 22:31