我有大约350个文本文件(每个文件大约75MB).我试图组合所有的文件和删除重复的条目.文件格式如下:
ip1,dns1 ip2,dns2 ...
我写了一个小shell脚本来做到这一点
#!/bin/bash for file in data/* do cat "$file" >> dnsFull done sort dnsFull > dnsSorted uniq dnsSorted dnsOut rm dnsFull dnsSorted
我经常做这个处理,并且想知道在运行它时是否有任何可以改进的处理方式.我可以接受任何编程语言和建议.谢谢!
首先,你没有使用猫的全部力量.循环可以被替换
cat data/* > dnsFull
假设该文件最初为空.
那么所有那些迫使程序等待硬盘的临时文件(通常是现代计算机系统中最慢的部分).使用管道:
cat data/* | sort | uniq > dnsOut
这仍然是浪费,因为只要单独做你正在使用的猫和uniq;整个脚本可以替换
sort -u data/* > dnsOut
如果这还不够快,那么意识到排序需要O(n lg n)个时间,而重复数据删除可以用线性时间与Awk进行:
awk '{if (!a[$0]++) print}' data/* > dnsOut
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。