digからANSWER(AレコードとPTRレコード)をひとつ取り出したい
正・逆引きをひたすらやって、その結果をサマリする必要があったので、
無理やりawkとsedを使って取り出してみました。
Aレコードを取り出す
dig ... | awk '/;; ANSWER SECTION:/,/^$/' | sed -e '/^$/d' -e '1d' | awk '$4 == "A" {print $NF}' | sed -n 1p
- 「ANSWER SECTIONから空白行まで」のかたまりにする
- その一行目を消す
- 4フィールド目が「A」である場合に、その末尾のフィールドを取り出す
- 一行目だけにする
レコード数も取り出したい
レコードをひとつだけ取り出した手前、「実際にはいくつ引けているのか」が分からないので、
Aレコードの数をHEADER?部分から取り出します。
ANSWERの数を取り出す
dig ... | awk -F ':' '{if($3 ~ "ANSWER") print $4}' | sed -e 's/, AUTHORITY//' -e 's/ //'
- ":"(コロン)を区切りに指定して、3フィールド目が「ANSWER」である場合に、4フィールド目を取り出す
- 「, AUTHORITY」を消去して、4フィールド目のアタマの数字部分だけにする
awkの「○フィールド目が□だった場合、△フィールドを取り出す」というやり方を覚えました。