如何将多行NS记录解析至CSV文件的单个单元格中?
合并域名NS记录到CSV同一单元格的Bash脚本修改方案
原脚本中,dig NS +short返回的NS记录每行一个,直接写入CSV时会导致同一域名的NS各占一行。要将同一域名的所有NS记录合并到单个单元格,只需将多行的NS记录转换为单行分隔字符串即可,以下是修改后的脚本:
#!/bin/bash # 可选:清空输出文件,避免重复执行时追加旧内容 > output.csv for domain in google.com twitter.com do # 将多行NS记录转为逗号分隔的单行字符串 ns_record=$(dig NS +short "$domain" | paste -sd ',' -) # 用双引号包裹字段,符合CSV规范 echo "\"$domain\",\"$ns_record\"" >> output.csv done
关键改动说明
- 使用
paste -sd ',' -:paste命令的-s参数表示合并所有输入行,-d ','指定用逗号作为分隔符,最后的-表示读取标准输入,这样就能把dig返回的多行NS记录合并成一行逗号分隔的字符串。 - 双引号包裹字段:给域名和NS记录添加双引号,避免如果NS记录包含特殊字符(如逗号)时破坏CSV格式,符合CSV的标准写法。
- 可选的文件清空:开头的
> output.csv会清空输出文件,如果你需要保留之前的内容,可以去掉这一行。
如果希望用其他分隔符(比如空格、分号),只需把paste -sd ',' -里的逗号换成对应的字符即可,例如用空格分隔:paste -sd ' ' -。
内容的提问来源于stack exchange,提问作者FrOgY
相关产品推荐
相关产品推荐

