+ -
当前位置:首页 → 问答吧 → 怎么按某一列分类,把文件拆分,写入不同的文件???

怎么按某一列分类,把文件拆分,写入不同的文件???

时间:2011-01-04

来源:互联网

本帖最后由 nb509 于 2011-01-04 00:18 编辑

文件格式:
  1. 0        1        2        3        4        5        6        ch1
  2. 0        1        4        3        4        5        6        ch3
  3. 0        1        2        3        4        5        6        ch2
  4. 0        1        3        3        4        5        6        ch1       
  5. 0        1        6        3        4        5        6        ch1
  6. 0        1        1        3        4        5        6        ch1
  7. 0        1        2        3        4        5        6        ch2
  8. 0        1        2        3        4        5        6        ch2
  9. 0        1        2        3        4        5        6        ch4
  10. 0        1        2        3        4        5        6        ch3
  11. 0        1        2        3        4        5        6        ch1
  12. 0        1        2        3        4        5        6        ch1
复制代码
我要按照第8列,把文件拆分,分别写入不同的文件里。文件名为:ch1.txt、ch2.txt、ch3.txt。。。。

我用下面代码,10万行数据,用了3分钟多。
  1. open (FILE,"<$in") or die"$!";
  2.   while (<FILE>)
  3.      {
  4.       split;
  5.       open (OUT,">>@_[7].txt")  or die"$!"; #这里操作频繁,太慢了吧!!

  6.       print OUT $_;
  7.      }
  8. }
复制代码
如果直接读取,写入一个文件,1秒不到。
  1. open (FILE,"<$in") or die"$!";
  2. open (OUT,">>ch.txt")  or die"$!";
  3. while (<FILE>)
  4.      {
  5.       split;

  6.       print OUT $_;
  7.      }
  8. }
复制代码
怎么优化啊?????

作者: nb509   发布时间: 2011-01-04

这个就是按照染色体名称merge数据么  你可以按照染色体号先打来 对应数量的句柄 然后在辨别写入 还有识别染色体号别用split  用正则匹配 就是最后一个单词么 把染色体号抓出来

作者: ssuuzzhhee   发布时间: 2011-01-04