使用 awk 解析 java 控制台输出

Bob*_*ers 0 shell awk

我正在尝试使用 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
Run Code Online (Sandbox Code Playgroud)

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

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

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

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

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

TIA,

鲍勃

Bil*_*iss 5

就像 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}'
Run Code Online (Sandbox Code Playgroud)