一个大文件根据第二个项目计算余数值,然后放到余数对应的同名文件

zyfqw 2017-06-27 10:48:41
一个文件叫file_all.txt,行数很多,有上百万件,现在想分割成8个文件
文件以逗号作为分隔符,根据第二个数值型项目,除以8,如果余数为1,那么这行就写到file_1.txt里,如果刚好整除,那就写到file_0.txt里

我用while循环,先用sed取出当前循环出来的这行,然后用awk取出这行的第二个项目,再计算余数,然后把这行写入对应余数的文件里

效果是可以达到,但好像速度太慢了,平均一秒钟才能做10条数据,上百万条那要做一天了

求高手指教一个效率高的写法,万分感谢
...全文
213 3 打赏 收藏 转发到动态 举报
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
zyfqw 2017-06-28
  • 打赏
  • 举报
回复
谢谢一楼
我现在写法是
awk -F, 'BEGIN{file0="File_0";file1="File_1";num="8"}
{if($2%num==0) print $0 >> file0;else if($2%num==1) print $0 >> file1}' File_All

定义的里面,以及if判定里面,还有2到7在这里就没有写出来了,实际是有的

我试了下百万件,速度还是很快的,一分钟内
LubinLew 2017-06-28
  • 打赏
  • 举报
回复
文件处理主要就是grep awk 和 sed, 你最好贴几行例子看看
codingMozart 2017-06-28
  • 打赏
  • 举报
回复
while循环和sed干嘛的,直接awk不就行了,100万行也就几m应该挺快的啊

18,772

社区成员

发帖
与我相关
我的任务
社区描述
Linux/Unix社区 专题技术讨论区
社区管理员
  • 专题技术讨论区社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧