私は自分自身のDNSサーバをFreeBSDでセットアップしようとしていて、ほとんどすべてを行っています。 ゾーン内の異なるドメインのログを記録して監視するためのカスタムスクリプトを書くために、私はhost -a -l mydomain.com
コマンドを使用しています。コマンドは与えられたドメイン内のすべてのサブドメインを表示します。私はこのコマンドの出力を> output
を使ってファイルに書き出しています。 問題は、出力には他にもいくつかのデータがあり、それは私にとっては興味がないことです。AWKを使用してコマンドの出力を調整します
持つセクション以下、このコマンドの出力、
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 6149
;; flags: qr aa ra; QUERY: 1, ANSWER: 45, AUTHORITY: 0, ADDITIONAL: 0
;; QUESTION SECTION:
;unix. IN AXFR
;; ANSWER SECTION:
abc.unix
xyz.unix
Received 1108 bytes from 192.168.82.1#53 in 0 ms
は私が単にシンプルなターミナルコマンドを使用してファイルへ;; ANSWER SECTION:
とReceived 1108 bytes from 192.168.82.1#53 in 0 ms
間のセクションを読み書きできることをとにかくありますか?私はawk
について読んでいますが、コマンドの出力の特定の部分だけを印刷するためにどのように使用できるのか分かりません。
の予想される出力
abc.unix
xyz.unix
これはsed
は
hostname -a -l mydomain.com | sed -n '/;; ANSWER/{n;N;p;q}'
がそれを行うだろう使用することができ、簡単な要件である
このコマンドええoutput'は、ファイルパスであることを期待し 'が、私は、コマンドないファイルを使用する必要があり、私が試した' |ホスト-a -l mydomain.com'どこ?。あなたのコマンドに 'output'を書いても動作しませんでした –
@RileyWillowあなたは' host -a -l mydomain。com | awk '/^;;答えセクション:/、/^[0-9。]の[0-9。#] *から[0-9] *バイトを受け取りましたms/{if($ 0!〜/^;;回答セクション:/ && $ 0! 〜/^[0-9。]から[0-9。*]までのバイト数[0-9。] ms /)print} '' –
素晴らしい!それは動作します、私は間違ってパイプをやっていた:)お返事に –