我正在尝试使用 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。