You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

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

关键说明

  1. 表头处理:先写入CSV表头,让输出文件的结构更直观。
  2. 字段提取适配:不同域名后缀的WHOIS输出格式存在差异,比如.com和.cn的字段名可能不同,需要根据实际查询结果调整grep的匹配关键词(例如部分域名的创建日期字段是"Created On:")。
  3. 空值兼容:用${变量:-默认值}语法给空字段设置占位符,避免CSV出现连续逗号导致格式混乱。
  4. 单行写入逻辑:通过echo直接输出一行逗号分隔的内容,确保每个域名对应一条横排记录。

内容的提问来源于stack exchange,提问作者ROHAN

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.01 10:45:33