次のコマンドを使用すると、ポート2181と関連ポートを使用するIPを識別できます。
echo stat | nc localhost 2181
Zookeeper version: 3.4.6-91--1, built on 01/04/2018 10:34 GMT
Clients:
/182.33.12.56:51397[1](queued=0,recved=43168,sent=43168)
/182.33.12.36:51915[1](queued=0,recved=1305948,sent=1305948)
/182.33.12.60:43528[1](queued=0,recved=793,sent=793)
/182.33.12.60:40151[1](queued=0,recved=5990,sent=5990)
/182.33.12.35:52973[1](queued=0,recved=117840,sent=117840)
/182.33.12.56:53533[1](queued=0,recved=76252,sent=76489)
Latency min/avg/max: 0/0/329
Received: 6097607
Sent: 6324062
Connections: 14
Outstanding: 0
Zxid: 0x50027d362
Mode: follower
Node count: 90630
私が望むのは、ポートを持つIPだけをキャプチャすることです。
したがって、予想される出力は次のようになります。
182.33.12.56:51397
182.33.12.36:51915
182.33.12.60:43528
182.33.12.60:40151
182.33.12.35:52973
182.33.12.56:53533
それではこれを試してみましょう
echo stat | nc localhost 2181 | grep -E "([0-9]{1,3}[\.]){3}[0-9]{1,3}" | awk '{print $1}'
/182.33.12.56:51397[1](queued=0,recved=43282,sent=43282)
/182.33.12.36:51915[1](queued=0,recved=1305988,sent=1305988)
/182.33.12.60:43528[1](queued=0,recved=815,sent=815)
/182.33.12.35:53110[0](queued=0,recved=1,sent=0)
/182.33.12.60:40151[1](queued=0,recved=6013,sent=6013)
/182.33.12.35:52973[1](queued=0,recved=117857,sent=117857)
しかし成功はありません。
ベストアンサー1
grepの-oオプションを試してください:
echo stat | nc localhost 2181 | grep -oP "([0-9]{1,3}\.){3}[0-9]{1,3}:\d+"
完全な行ではなく、正規表現に一致する行の一部のみを印刷する必要があります。さらに、追加の「awk」呼び出しは必要ありません。