免费注册 查看新帖 |

Chinaunix

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

这个问题适不适合perl来处理 [复制链接]

论坛徽章:
1
白羊座
日期:2013-09-22 09:55:40
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2008-06-05 15:16 |只看该作者 |倒序浏览
5可用积分
一些文本的、类似表格样布局的数据,一行为一条记录,一行有若干列(以空格分隔),
需要先匹配特定的记录,然后把匹配成功地记录,按照某列的值进行排序。
数据总行数50多万条,匹配的记录也就两千多条。

请教这样的问题适不适合perl处理,如果可以,该如何做?
谢谢。

最佳答案

查看完整内容

#!/usr/bin/perluse strict;use warnings;my @data;while () { chomp; push @data, $_;}@data = sort {(split / /, $a)[0] (split / /, $b)[0]} @data;print "$_\n" for @data;__DATA__192412 23172 761 24546 156680 comment137208 1756 28 2028 16760 comment27048 548 4 1805 1800 comment316528 759 0 328 80 ...

论坛徽章:
0
2 [报告]
发表于 2008-06-05 15:16 |只看该作者
#!/usr/bin/perl

use strict;
use warnings;

my @data;

while (<DATA>) {
        chomp;
        push @data, $_;
}

@data = sort {(split / /, $a)[0] <=> (split / /, $b)[0]} @data;

print "$_\n" for @data;

__DATA__
192412      23172        761      24546     156680   comment1
37208       1756         28       2028      16760   comment2
7048        548          4       1805       1800   comment3
16528        759          0        328       8040   comment4
14000        300          0        140       6008   comment5
8044       6076       5201      13121       7124   comment6
84          0          0          0         80   comment7
13088        256          2       9200       7712   comment8
79980       7148         26      35152      84980   comment9
16676       1168          0       4956      11492   comment10
28188       4000         45       1389      16012   comment11
696     165836          0          1        320   comment12
680    5416770       1209         94        836   comment13

——————————————————————
我假设是用第1列来排序的,你可以改

论坛徽章:
0
3 [报告]
发表于 2008-06-05 15:29 |只看该作者
恕我直言,不适合。

论坛徽章:
0
4 [报告]
发表于 2008-06-05 15:37 |只看该作者
做当然是没问题。

论坛徽章:
1
白羊座
日期:2013-09-22 09:55:40
5 [报告]
发表于 2008-06-05 15:38 |只看该作者

回复 #2 福瑞哈哥 的帖子

嗯,也许把数据放到数据库里方便一些。

论坛徽章:
0
6 [报告]
发表于 2008-06-05 15:38 |只看该作者
有分啊

你拿点样本来,看看怎么做

论坛徽章:
1
白羊座
日期:2013-09-22 09:55:40
7 [报告]
发表于 2008-06-05 15:39 |只看该作者

回复 #3 cobrawgl 的帖子

匹配没问题,如何排序呢?
我是新手

论坛徽章:
0
8 [报告]
发表于 2008-06-05 15:41 |只看该作者
你拿条记录来看看啊

论坛徽章:
1
白羊座
日期:2013-09-22 09:55:40
9 [报告]
发表于 2008-06-05 15:42 |只看该作者

回复 #5 cobrawgl 的帖子

主要按某列对记录排序

  1.     192412      23172        761      24546     156680   comment1
  2.      37208       1756         28       2028      16760   comment2
  3.       7048        548          4       1805       1800   comment3
  4.      16528        759          0        328       8040   comment4
  5.      14000        300          0        140       6008   comment5
  6.       8044       6076       5201      13121       7124   comment6
  7.         84          0          0          0         80   comment7
  8.      13088        256          2       9200       7712   comment8
  9.      79980       7148         26      35152      84980   comment9
  10.      16676       1168          0       4956      11492   comment10
  11.      28188       4000         45       1389      16012   comment11
  12.        696     165836          0          1        320   comment12
  13.        680    5416770       1209         94        836   comment13
  14.       2752       1492         16       2404       3352   comment14
  15.         20         20          0          0        180   comment15
复制代码

论坛徽章:
1
白羊座
日期:2013-09-22 09:55:40
10 [报告]
发表于 2008-06-05 15:54 |只看该作者

回复 #9 cobrawgl 的帖子

我试一试
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

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

清除 Cookies - ChinaUnix - Archiver - WAP - TOP