从python获取Java版本号
我需要从python(或bash)获取java版本号,例如“ 1.5”。
我会用:
os.system('java -version 2>&1 | grep "java version" | cut -d "\\\"" -f 2')
但这返回1.5.0_30
例如,如果数字更改为“ 1.10”,则需要兼容。
我想使用cut或grep甚至sed。它应该在一行中。
-
考虑这样的输出:
$ 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)
您可以这样获得版本号
awk
:$ java -version 2>&1 | awk -F[\"_] 'NR==1{print $2}' 1.8.0
或者,如果您只想使用前两位
.
分隔的数字:$ 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