`java -version` 的输出与 grep 或 awk 不匹配

yae*_*ael 6 linux grep ksh awk

在我的 Linux 机器上,我不清楚为什么如果我执行以下操作,那么我不会只得到版本字符串(“1.5.0_32”)。

# java -version | grep version | awk '{print $NF}'
java version "1.5.0_32"
Java(TM) 2 Runtime Environment, Standard Edition (build 1.5.0_32-b05)
Java HotSpot(TM) Server VM (build 1.5.0_32-b05, mixed mode)
Run Code Online (Sandbox Code Playgroud)

为什么不grepawk工作?

只是为了表明 grep 和 awk 在其他示例上工作

# echo ' java version "1.5.0_32" ' | grep version  | awk '{print $NF}'
"1.5.0_32"
Run Code Online (Sandbox Code Playgroud)

Gur*_*uru 21

像这样尝试:

java -version 2>&1 | grep version  | awk '{print $NF}'
Run Code Online (Sandbox Code Playgroud)

看起来输出将进入 stderr。

此外,不需要 grep:

java -version 2>&1 | awk '/version/{print $NF}'
Run Code Online (Sandbox Code Playgroud)