将 awk 与多个管道一起使用

将 awk 与多个管道一起使用

命令

./kafka-consumer-groups.sh --bootstrap-server localhost:9092 --describe -group tuevGroup | grep mis.merchantCtpCredential 

产生以下不带标题的输出:

GROUP           TOPIC                      PARTITION  CURRENT-OFFSET  LOG-END-OFFSET  LAG             CONSUMER-ID                                                HOST                      CLIENT-ID
tuevGroup       mis.merchantCtpCredentials 1          231             231             0               consumer-tuevGroup-2-00e2ed7d-0fdc-4303-bc06-0e8f50b1dc00  00.24.242.16/00.24.242.00 consumer-tuevGroup-2
tuevGroup       mis.merchantCtpCredentials 5          182             182             0               consumer-tuevGroup-2-00e2ed7d-0fdc-4303-bc06-0e8f50b1dc00  00.24.242.16/00.24.242.00 consumer-tuevGroup-2

我想获取所有行的 LAG 列的总数,因此我将结果通过管道传递给 awk,如下所示

./kafka-consumer-groups.sh --bootstrap-server localhost:9092 --describe -group tuevGroup |
  grep mis.merchantCtpCredentials |
  awk '{sum += $5} END {print sum}'

然而,这不起作用,尽管如果我提交,grep mis.merchantCtpCredential我会得到所有行的总结果,但未过滤

我想知道我在这里做错了什么,非常感谢您的帮助

答案1

感谢 @unxnut、@JimL 和 @camh 的帮助,我的命令遇到了两个问题:

  1. 我指的是错误的列(即 5 美元而不是 6 美元)。
  2. 该命令不是最理想的,因为 grep 的使用首先是多余的,可以用单个 awk 调用代替。

该命令的最终版本将是

./kafka-consumer-groups.sh --bootstrap-server localhost:9092 --describe -group tuevGroup | awk '$2 == "mis.merchantCtpCredential" {sum += $6} END {print sum+0}'

相关内容