使用 awk 解析 java 控制台输出

使用 awk 解析 java 控制台输出

我正在尝试使用 awk 解析 Java 应用程序生成的输出,但不起作用。似乎管道后的命令无法获取/查看 Java 应用程序抛出的数据。

我正在执行以下命令(带有该命令生成的返回值):

[root@localhost]# java -jar jmxclient.jar usr:pass host:port java.lang:type=Threading ThreadCount
06/11/2010 15:46:37 -0300 org.archive.jmx.Client ThreadCount: 103

我需要的只是字符串的最后一部分。所以我尝试使用 awk(在行末使用管道符|awk -F ':' '{print $4}'

[root@localhost]# java -jar jmxclient.jar usr:pass host:port java.lang:type=Threading ThreadCount|awk -F ':' '{print $4}'

但输出未被解析。它抛出了整个字符串:06/11/2010 15:46:37 -0300 org.archive.jmx.Client ThreadCount: 103

我也尝试使用|cut -f4 -d":"相同的结果:字符串未被解析。

所以我的问题是,如何解析输出以便仅获取字符串末尾的数字?

短暂性脑缺血发作,

鲍勃

答案1

就像 Ignacio Vazquez-Abrams 所说的那样,它可能会进入 stderr。此外,还有一个 awk 技巧可以让您的生活更轻松:$NF,这是最后一个字段。因此,我会做这样的事情:

java -jar jmxclient.jar usr:pass host:port java.lang:type=Threading ThreadCount 2>&1 | awk -F: '{print $NF}'

答案2

日志可能正在输出到 stderr。

bash 说明

相关内容