如何修改Bash脚本将Whois查询结果追加到域名列表对应行后
解决方案:域名与WHOIS Registrar URL对应输出
修正后的Bash脚本
可以通过捕获每个域名的WHOIS查询结果,确保域名与结果一一对应,无结果时显示NULL。以下是修正后的脚本:
#!/bin/bash while IFS= read -r domain; do # 跳过空行 [[ -z "$domain" ]] && continue # 提取Registrar URL,兼容不同格式的WHOIS输出 registrar_url=$(whois "$domain" | grep -oP 'Registrar URL:\s*\K.*') # 若结果为空则设为NULL [[ -z "$registrar_url" ]] && registrar_url="NULL" # 输出"域名 结果"格式 echo "$domain $registrar_url" done < list.txt
关键改进点
- 结果关联:将每个域名的WHOIS查询结果存入变量,再与域名一起输出,彻底避免结果错位问题。
- 精准提取:使用
grep -oP的Perl正则语法,适配不同WHOIS服务器的输出格式,准确提取Registrar URL:后的内容。 - 空值处理:自动将空结果替换为
NULL,同时跳过列表中的空行,避免无效查询。
其他实现方式
如果想简化脚本,也可以用xargs结合单条命令实现:
xargs -I {} sh -c 'url=$(whois {} | grep -oP "Registrar URL:\s*\K.*"); echo "{} ${url:-NULL}"' < list.txt
通过xargs遍历每个域名,用${url:-NULL}在结果为空时自动替换为NULL,同样能保证域名与结果严格对应。
内容的提问来源于stack exchange,提问作者Zucoa
相关产品推荐
相关产品推荐

