我试图用awk来parsing一个由java应用程序生成的输出,但是它不工作。 看来pipe道后面的命令无法获取/查看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
我需要的只是string的最后部分。 所以我尝试使用awk(在行尾使用pipe道|awk -F ':' '{print $4}' :
[root@localhost]# java -jar jmxclient.jar usr:pass host:port java.lang:type=Threading ThreadCount|awk -F ':' '{print $4}'
但输出不被parsing。 它引发整个string: 06/11/2010 15:46:37 -0300 org.archive.jmx.Client ThreadCount: 103
我也|cut -f4 -d":"用|cut -f4 -d":"得到相同的结果:string不被parsing。
所以我的问题是,我如何parsing输出才能得到string末尾的数字?
TIA,
短发
就像伊格纳西奥·巴斯克斯·艾布拉姆斯(Ignacio Vazquez-Abrams)说的那样,它可能会更加直线。 而且,有一个awk技巧可以让你的生活更轻松: $NF ,这是最后一个字段。 因此,我会做这样的事情:
java -jar jmxclient.jar usr:pass host:port java.lang:type=Threading ThreadCount 2>&1 | awk -F: '{print $NF}'
日志可能正在输出到stderr。
说明bash