我有一个脚本,可以对列表中的每个域进行 Whois 查找,我需要提取创建日期和到期日期。我有第一部分,但似乎也无法获得到期日期。我不想whois
两次运行域......
while IFS="," read domain rdate; do # Domain name and received date
cdate=( $(whois $domain | grep -m 1 -i Creation| awk -F" " '{print $3}') )
# Harvest creation date from whois record for each domain
# expdate=??????
printf "$domain,$cdate,$expdate \n"
done < "temp1.txt" 2> /dev/null # Sets the file to read in from and suppress error messages
我尝试将 whois 设置为“whod”,如下所示,但没有成功:
whod=$(whois $domain|awk '{print $0}')
expdate=( $(echo $whod |grep -m 1 -i 'Expiration Date' | awk -F" " '{print $3}') )
echo $expdate
答案1
首先, 中没有任何意义awk '{print $0}'
,只是打印每个输入行。代替使用whod=$(whois "$domain")
。不管怎样,你的主要问题是你没有引用你的变量。这会导致各种各样的问题,最重要的是,当您 时echo $whod
,您得到的是包含所有数据的一行。因此,您的应用程序awk '{print $3}'
将应用于此行(为了清楚起见,缩写为简写):
Whois Server Version 2.0 Domain names in the .com and .net [ ... ]
第三个词Version
大概就是你得到的。您还使用数组 ( expdate=( $( echo $whod ... ) )
),我不明白为什么。可以有多个匹配吗?不管怎样,你的脚本的工作版本是:
while IFS="," read domain rdate; do
whod="$(whois "$domain")"
cdate="$(echo "$whod" | grep -m 1 -i Creation| awk -F" " '{print $3}')"
expdate="$(echo "$whod" |grep -m 1 -i 'Expiration Date' | awk -F" " '{print $3}')"
printf "$domain,$cdate,$expdate \n"
done < "temp1.txt"