使用GREP并返回以下文本。 (DNS查询)

时间:2013-11-27 17:12:16

标签: linux bash dns

我正在尝试使用脚本运行两个linux dns命令WHOIS和DIG。

到目前为止,我的脚本如下:

#!/bin/bash
for i in $1
do      
    reg1=`whois $i`
    echo "*********WHOIS Results for $i*********"
    echo -e "[$i]\n$reg1"
    for j in 4.2.2.3 
    do
        reg=`dig any @$j $i `
        echo -e "[$j]$reg"
    done
done

现在我正在寻找一个替换'4.2.2.3'的命令,我可以用它来搜索上一个命令的输出并返回该行的一部分:'Name Server:A.DNS.HOSTWAY.NET'。 'Name Server:'是我要搜索的内容,它应该返回以下文本,停在该行的末尾。

2 个答案:

答案 0 :(得分:0)

要回答您的问题,您可以尝试以下方式:

[ ~]$ echo "Name Server: A.DNS.HOSTWAY.NET"|egrep -o "Name Server:\ *[A-Za-z\.]*"|awk -F ": *" '{print $2}'
A.DNS.HOSTWAY.NET

但我不确定我是否了解所有内容,包括在单个值上使用for循环的事实。

答案 1 :(得分:0)

如果我正在解释你想要做的事情,你应该可以这样做:

#!/bin/bash
for i in $1
do      
    reg1=`whois $i`
    echo "*********WHOIS Results for $i*********"
    echo -e "[$i]\n$reg1"
    grep 'Name Server' <<< "$reg1" | awk '{print $3}' | while read j
    do
        echo -e "[$j]$(dig any @$j $i)"
    done
done