从 NS 区域文件生成 CSV

从 NS 区域文件生成 CSV

我有一个包含多行记录的大文件。例如:

domain1 NS ns1
domain1 NS ns2
domain1 NS ns3
domain2 NS dnsx

生成以下形式的 CSV 的最快方法是什么

domain1,ns1,ns2,ns3
domain2, dnsx

我已经尝试过 php 和 groovy 脚本,但是对于 1Gb 文件(读取)(以及随后写入 csv 文件)而言,处理器加载时间太长。

我认为应该有比我正在做的更好的编程方法。基本上,我正在创建一个列表/数组来包含记录,并检查最后一个元素是否在当前正在检查的行中找到相同的域。

PS 提到了 groovy/php,但回应可能与这些特定的脚本语言无关。

答案1

假设所有具有相同域的记录都分组在一起,这个 awk 程序将占用非常小的内存(无法说出 CPU 负载是多少)

awk '
    $1 != domain {
        if (domain) print ""
        printf "%s", $1
        domain = $1
    } 
    {printf ",%s", $3} 
    END {print ""}
' file

相关内容