dig 명령을 실행하면 다음과 같은 출력이 표시됩니다.
dig @1.1.1.1 google.com +noall +answer +stats
; <<>> DiG 9.11.4-P1 <<>> @1.1.1.1 google.com +noall +answer +stats
; (1 server found)
;; global options: +cmd
obodrm.prod.at.dmdsdp.com. 86154 IN A 62.178.85.125
;; Query time: 1 msec
;; SERVER: 1.1.1.1#53(1.1.1.1)
;; WHEN: Wed Sep 11 15:04:35 CEST 2019
;; MSG SIZE rcvd: 70
다음 "62.178.85.125"와 쿼리 시간 1ms를 필터링하여 한 줄에 표시하고 싶습니다.
답변1
awk를 사용하면 가능한 패턴에 따라 정확한 일치 기준을 조정하는 것이 매우 쉽습니다.
dig @1.1.1.1 google.com +noall +answer +stats | \
awk '$3 == "IN" && $4 == "A"{ip=$5}/Query time:/{t=$4 " " $5}END{print ip, t}'
답변2
그렙을 사용하여,
dig @1.1.1.1 google.com +noall +answer +stats | grep -oEe "\b([0-9]{1,3}\.){3}[0-9]{1,3}$" -oEe 'Query time: [0-9]+ msec'
-oEe "\b([0-9]{1,3}\.){3}[0-9]{1,3}$"
줄 끝에서 IP 주소를 검색합니다.-oEe 'Query time: [0-9]+ msec'
grep 쿼리 시간.
답변3
GNU 사용 sed
:
dig @1.1.1.1 google.com +noall +answer +stats | \
sed -nEz 's/.*[[:space:]]([0-9.]+)\n;; (Query time[^\n]*\n).*/\1 \2/p'
sed
옵션 을 사용하면 -z
입력이 하나의 큰 문자열로 처리되고 옵션은 -n
일치하는 부분( /p
)만 인쇄합니다. IP 주소 뒤에는 개행 문자와 가 오기 때문에 ;; Query time
더 간단한 정규식을 사용하여 IP를 일치시킬 수 있습니다. 두 문자열 모두 그룹으로 캡처되며 (…)
입력은 그룹을 참조하여 대체됩니다.\1 \2