Reputation: 3274
here is the dig query result
$ dig gmail.com mx
; <<>> DiG 9.9.5-3ubuntu0.14-Ubuntu <<>> gmail.com mx
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 60118
;; flags: qr rd ra; QUERY: 1, ANSWER: 5, AUTHORITY: 0, ADDITIONAL: 1
;; OPT PSEUDOSECTION:
; EDNS: version: 0, flags:; udp: 4096
;; QUESTION SECTION:
;gmail.com. IN MX
;; ANSWER SECTION:
gmail.com. 1484 IN MX 20 alt2.gmail-smtp-in.l.google.com.
gmail.com. 1484 IN MX 10 alt1.gmail-smtp-in.l.google.com.
gmail.com. 1484 IN MX 30 alt3.gmail-smtp-in.l.google.com.
gmail.com. 1484 IN MX 5 gmail-smtp-in.l.google.com.
gmail.com. 1484 IN MX 40 alt4.gmail-smtp-in.l.google.com.
;; Query time: 1 msec
;; SERVER: 127.0.1.1#53(127.0.1.1)
;; WHEN: Fri May 26 14:20:53 NPT 2017
;; MSG SIZE rcvd: 161
i want to extract the ;;ANSWER SECTION:
part ..here its
;; ANSWER SECTION:
gmail.com. 1484 IN MX 20 alt2.gmail-smtp-in.l.google.com.
gmail.com. 1484 IN MX 10 alt1.gmail-smtp-in.l.google.com.
gmail.com. 1484 IN MX 30 alt3.gmail-smtp-in.l.google.com.
gmail.com. 1484 IN MX 5 gmail-smtp-in.l.google.com.
gmail.com. 1484 IN MX 40 alt4.gmail-smtp-in.l.google.com.
although the dig provided exact answer with just dig gmail.com mx +short
im curious if theres way by using awk, sed or combining both
Upvotes: 2
Views: 386
Reputation: 3274
# dig gmail.com mx | awk '/;; ANSWER SECTION:/{p=1}!$0{p=0}p' | grep -v ANSWER
gmail.com. 3599 IN MX 10 alt1.gmail-smtp-in.l.google.com.
gmail.com. 3599 IN MX 40 alt4.gmail-smtp-in.l.google.com.
gmail.com. 3599 IN MX 30 alt3.gmail-smtp-in.l.google.com.
gmail.com. 3599 IN MX 5 gmail-smtp-in.l.google.com.
gmail.com. 3599 IN MX 20 alt2.gmail-smtp-in.l.google.com.
Upvotes: 0
Reputation: 15471
With sed:
dig gmail.com mx | sed '/;; ANSWER SECTION:/,/^$/!d;//d;'
Upvotes: 1
Reputation: 85895
Use an Awk
statement as below,
dig gmail.com mx | awk '$0==";; ANSWER SECTION:"{f=1; next}!NF{f=0;}f'
to get the output as you need.
gmail.com. 1484 IN MX 20 alt2.gmail-smtp-in.l.google.com.
gmail.com. 1484 IN MX 10 alt1.gmail-smtp-in.l.google.com.
gmail.com. 1484 IN MX 30 alt3.gmail-smtp-in.l.google.com.
gmail.com. 1484 IN MX 5 gmail-smtp-in.l.google.com.
gmail.com. 1484 IN MX 40 alt4.gmail-smtp-in.l.google.com.
The idea is to match the line containing your pattern ;; ANSWER SECTION:
set a flag on its occurrence and reset it at the next occurring empty field.
Upvotes: 2