Bash编写的Whois脚本输出格式问题:如何将竖排改为横排?
解决Bash Whois脚本输出横排CSV格式问题
修改思路
核心是把每个域名对应的所有提取字段(域名、注册商、创建日期、过期日期)拼接成一行逗号分隔的字符串,再写入输出文件,而非单独输出每个字段。
修改后的脚本示例
#!/bin/bash # 写入CSV表头(可选,让输出结构更清晰) echo "域名,注册商,创建日期,过期日期" > domain_info.csv # 逐行读取domains.csv中的域名 while IFS= read -r domain; do # 跳过空行 [[ -z "$domain" ]] && continue # 执行WHOIS查询并提取对应字段(需根据不同WHOIS服务器的输出调整匹配规则) registrar=$(whois "$domain" | grep -i "Registrar:" | head -n1 | awk -F': ' '{print $2}' | sed 's/^[[:space:]]*//;s/[[:space:]]*$//') creation_date=$(whois "$domain" | grep -i "Creation Date:" | head -n1 | awk -F': ' '{print $2}' | sed 's/^[[:space:]]*//;s/[[:space:]]*$//') expiry_date=$(whois "$domain" | grep -i "Registry Expiry Date:" | head -n1 | awk -F': ' '{print $2}' | sed 's/^[[:space:]]*//;s/[[:space:]]*$//') # 处理字段为空的情况,用"未知"占位 registrar=${registrar:-未知} creation_date=${creation_date:-未知} expiry_date=${expiry_date:-未知} # 将所有字段拼接成一行,追加到输出文件 echo "$domain,$registrar,$creation_date,$expiry_date" >> domain_info.csv done < domains.csv
关键说明
- 表头处理:先写入CSV表头,让输出文件的结构更直观。
- 字段提取适配:不同域名后缀的WHOIS输出格式存在差异,比如
.com和.cn的字段名可能不同,需要根据实际查询结果调整grep的匹配关键词(例如部分域名的创建日期字段是"Created On:")。 - 空值兼容:用
${变量:-默认值}语法给空字段设置占位符,避免CSV出现连续逗号导致格式混乱。 - 单行写入逻辑:通过
echo直接输出一行逗号分隔的内容,确保每个域名对应一条横排记录。
内容的提问来源于stack exchange,提问作者ROHAN
相关产品推荐
相关产品推荐

