domain:
nameservers"
행 범위 와 to가 포함된 단일 행을 추출하려고 합니다 ]
. 나는 이러한 일을 개별적 grep
으로 수행하는 방법을 알고 있지만 awk
즉시 수행하는 방법은 모릅니다.
입력 데이터:
domain: stackexchange.com date: Mon Jul 3 00:43:49 2017 output_dir: /tmp/stackexchange.com.12653
INFO:root:crawl: exiting dom: 'stackexchange.com' took: 10s
INFO:root:2017-07-03 00:44:06:370 slave.py: exiting args.url: 'stackexchange.com' took: 3s
+ comparing web systems
"mail_server_ip": [], | "mail_server_ip": []
"nameservers": [
"ns-925.awsdns-51.net.",
"ns-1029.awsdns-00.org.",
"ns-cloud-d1.googledomains.com.",
"ns-cloud-d2.googledomains.com.",
],
"nameservers_domains": [ | "nameservers_domains": [],
"m
원하는 출력:
domain: stackexchange.com date: Mon Jul 3 00:43:49 2017 output_dir:
"nameservers": [
"ns-925.awsdns-51.net.",
"ns-1029.awsdns-00.org.",
"ns-cloud-d1.googledomains.com.",
"ns-cloud-d2.googledomains.com.",
],
데이터를 개별적으로 추출하는 명령:
grep "domain:" test_sample.txt
awk '/nameservers"/,/]/' test_sample.txt
답변1
앗방법
awk '/^domain:/{print}/"nameservers":/,/]/' test_sample.txt
답변2
grep가까운 P
(폴리 메라 제 연쇠 반응) 옵션:
grep -Poz 'domain: .+ output_dir:|\s*"nameservers": \[[^][]+\],\n' test_sample.txt
산출:
domain: stackexchange.com date: Mon Jul 3 00:43:49 2017 output_dir:
"nameservers": [
"ns-925.awsdns-51.net.",
"ns-1029.awsdns-00.org.",
"ns-cloud-d1.googledomains.com.",
"ns-cloud-d2.googledomains.com.",
],
주요 패턴은 정규식 교대 그룹을 기반으로 합니다.<domain_line>|<nameservers_lines>