複数のパイプで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に感謝します。コマンドには2つの問題があります。

  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}'

おすすめ記事