NC에서 세부 정보를 캡처하는 방법

NC에서 세부 정보를 캡처하는 방법

다음 명령을 사용하면 포트 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" 호출이 필요하지 않습니다.

관련 정보