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

借助Awk从nslookup提取域名NS记录并规范输出格式

批量提取域名NS记录的修正方案

问题分析

你当前的脚本存在两个核心问题:

  1. 域名丢失/位置错乱:原脚本仅输出处理后的NS记录,未将域名与对应记录拼接,导致输出结果缺少域名标识,无法一一对应。
  2. NS记录被强制排序:脚本中使用了sort -u,会自动对NS记录按字母排序,不符合你保留原始记录顺序的需求。

修正后的命令

while read -r domain; do
    # 提取并格式化NS记录,保留原始顺序
    ns_records=$(nslookup -type=ns "$domain" 2>/dev/null | awk '/nameserver =/ {sub(/nameserver = /, ""); print $1}' | tr '\n' ',' | sed 's/,$//')
    # 输出域名+NS记录的目标格式
    echo "$domain,$ns_records"
done < dom.txt

关键改进点

  • 保留域名关联:明确将循环读取的$domain与NS记录拼接后输出,确保每行开头是对应域名。
  • 移除强制排序:删除了sort -u,保留NS记录的原始返回顺序。
  • 简化输出处理:用一次awk完成NS记录的提取与清理,替代原脚本中多次sed和awk的冗余操作。
  • 屏蔽错误干扰:添加2>/dev/null屏蔽nslookup的错误输出(如域名解析失败的提示),避免污染结果。

可选调整

如果需要对NS记录去重但不排序,可以将提取NS的部分修改为:

ns_records=$(nslookup -type=ns "$domain" 2>/dev/null | awk '/nameserver =/ {sub(/nameserver = /, ""); print $1}' | awk '!seen[$0]++' | tr '\n' ',' | sed 's/,$//')

这里用awk '!seen[$0]++'实现去重且保留原始顺序。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.27 05:17:11