我在命令行上有以下查询,我希望输出值显示在单行上,这样我就可以将它提供给我的监控系统了,我想知道如何通过perl,sed实现这一点,awk
我的命令行
activemq:query -QQueue=PCA --view QueueSize,ConsumerCount,EnqueueCount,DequeueCount
输出
ConsumerCount = 1
QueueSize = 0
DequeueCount = 148248
EnqueueCount = 148248
Desierd输出
1 0 148248 148248
谢谢
答案 0 :(得分:5)
使用命令行开关非常有趣:
perl -anwe'print "$F[2] "'
-a
autosplits空白行,从而剥离换行符。我们添加一个空格并打印最后一个字段。
答案 1 :(得分:2)
将它管道输入awk:
... | awk -F= '{printf "%s",$2}'
根据需要输出:
1 0 148248 148248
答案 2 :(得分:2)
Perl版本:
... | perl -l40 -ane 'print $F[2]'
或(Perl 5.8.8)
... | perl -ne 'chomp; split /=/; print $_[1]'
注意:Since Perl 5.12.0," split()在标量或无效上下文"中调用时不再修改@_,因此第二个版本不适用于Perl> = 5.12.0,但第一个版本应该仍然有效。
测试:
$ cat t00.txt
ConsumerCount = 1
QueueSize = 0
DequeueCount = 148248
EnqueueCount = 148248
$ cat t00.txt | perl -ne 'chomp; split /=/; print $_[1]'
1 0 148248 148248
$ cat t00.txt | perl -l40 -ane 'print $F[2]'
1 0 148248 148248
答案 3 :(得分:2)
这是另一个。保持在数组中推送值,并在最后打印整个数组。这最终会为你提供一个新线。
但是,如果您的文件非常庞大,这将不太理想。在这种情况下,请使用TLP's狡猾的单行。
... | perl -lane 'push @a, $F[2] }{ print "@a"'