免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
12下一页
最近访问板块 发新帖
查看: 9145 | 回复: 14
打印 上一主题 下一主题

求助:perl随机提取文本行 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2010-05-24 15:07 |只看该作者 |倒序浏览
我有一个7000行的文本数据,想每次从中随机提取1280行,提取100次,最后生成100个1280行的文本,该如何做?各位请指点。

论坛徽章:
0
4 [报告]
发表于 2010-05-24 17:34 |只看该作者
可以将文件读入内存中的数组,以数组最大索引值为上限生成随机数,通过一个HASH来过滤重复值。

论坛徽章:
0
6 [报告]
发表于 2010-05-24 17:50 |只看该作者
回复 2# wind_ch


    最好是代码,我刚学perl没多久。一个提取出来的文本文件中间不能重复。谢谢大哥!

论坛徽章:
0
7 [报告]
发表于 2010-05-24 19:10 |只看该作者
本帖最后由 iamlimeng 于 2010-05-24 19:48 编辑
  1. #!/usr/bin/perl

  2. use strict;
  3. use warnings;

  4. my $data_file = "file1";

  5. print " Generating ...\n";

  6. open FH, "$data_file" or die "Can not open the required file $data_file !";
  7. my @data = <FH>;
  8. close FH;

  9. for (1..100) {
  10.         my %hash;
  11.         while ((keys %hash) < 1280) {
  12.                  $hash{int(rand($#data))} = 1;
  13.         }
  14.         open OUT, ">random$_.txt" or die "Can not open the required file random$_.txt !";
  15.         foreach (keys %hash) {
  16.                  print OUT "$data[$_]";
  17.         }
  18.         close OUT;
  19. }
  20. print " Complete!\7";
复制代码
该程序生成不重复的行号索引,也就是说,生成的同一文件不会包含重复的行,但如果你的数据本身有重复行,那应该小改一下程序。

论坛徽章:
0
8 [报告]
发表于 2010-05-25 08:40 |只看该作者
回复 7# iamlimeng


    多谢 ,了解,验证

论坛徽章:
0
9 [报告]
发表于 2010-07-02 22:09 |只看该作者
回复 7# iamlimeng


    我需要一个能随机提取行,但又要能重复的脚本。我是改不出来,想请大哥赐教。
   还有,我怎么查perl里的函数的功能,比如说那个random函数,我不知它生成的数的起点是0还是1还是可为负数,而且不知它生成的数符合什么分布?
   在Dos或Linux命令行界面解释一下吧,主要是perl是脚本,不像Linux里的函数,我能man或-h查询,perl里的函数除了上网,不知该怎么查。最好能一步步演示一下。
    谢谢!

论坛徽章:
0
2 [报告]
发表于 2010-05-24 15:36 |只看该作者
1. 是想要代碼還是想要思路
2. 能不能重複提取行.

论坛徽章:
0
3 [报告]
发表于 2010-05-24 17:22 |只看该作者
提取文件的1280行,倒是好解决,主要是重复读取 看看大家都有什么方法,期待。。。。。。

论坛徽章:
0
5 [报告]
发表于 2010-05-24 17:36 |只看该作者
回复 4# iamlimeng


    具体请赐教?不胜感谢
一路征程一路笑 该用户已被删除
10 [报告]
发表于 2010-07-02 22:20 |只看该作者
提示: 作者被禁止或删除 内容自动屏蔽
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP