java -version 的输出结果过滤问题

今天碰到一个奇葩问题,各位可以试一试。

想拿到 java -version 输出结果中的精确版本号, 例如下面结果中的 1.8.0_91

java version "1.8.0_91"
Java(TM) SE Runtime Environment (build 1.8.0_91-b14)
Java HotSpot(TM) 64-Bit Server VM (build 25.91-b14, mixed mode)

发现无法使用 grep / sed / awk 来过滤, 被恶心到了
这个问题其实很简单,这个是 stderr 输出, grep / sed / awk 等管道工具看不见,重定向一下就可以了………………

java -version 2>&1 |grep -oP '(?<=").*(?=")'

PS. 新版本的 jdk, 我这里是 jdk11, 有另一个参数 java --version 是 stdout ,可以正常对结果进行过滤,注意是两个横线。

原文地址:https://www.cnblogs.com/unchch/p/13751042.html