여러 파이프와 함께 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. 잘못된 열을 언급하고 있었습니다(예: $6 대신 $5).
  2. 이 명령은 처음에 grep 사용이 중복되고 단일 awk 호출로 대체될 수 있기 때문에 차선책입니다.

이 명령의 최종 버전은 다음과 같습니다.

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

관련 정보