在线咨询
eetop公众号 创芯大讲堂 创芯人才网
切换到宽版

EETOP 创芯网论坛 (原名:电子顶级开发网)

手机号码,快捷登录

手机号码,快捷登录

找回密码

  登录   注册  

快捷导航
搜帖子
查看: 1828|回复: 1

[求助] 一个perl的问题

[复制链接]
发表于 2015-8-28 11:47:56 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有账号?注册

x
原文件aaaaa        10010000
ddddd        10001111
bbbbb        11100000
aaaaa        10000000
目标文件
aaaaa        2
aaaaa        1
bbbbb        3
ddddd        5


分析:
(1)逐行统计1个个数,输出
aaaaa        2
ddddd        5
bbbbb        3
aaaaa        1


(2)第一列按字母大小从小到大排序,第一列一样按照第二列从大到小排序输出
aaaaa        2
aaaaa        1
bbbbb        3
ddddd        5


我写的:perl
#!usr/bin/perl
open (in,"<1") or die;
open (out,">2") or die;
foreach (<in>)
{
@b=split /\s+/,$_; #按照空白符拆分
$cnt=0;
while(@b[1]=~/1/g) #第二个元素 匹配1并计数
{
$cnt++;
}
print out "@b[0]\t$cnt\n";#输出分析(1)
}

close in;
close out;

open (out,"<2") or die;
open (out1,">3") or die;

@sorted1=sort{$a->[0] cmp $b->[0] or $b->[1] <=> $a->[1]}   #按照要求排序
map [(split)], <out>;

for $sorted1(@sorted1)
{
print "@$sorted1\n";
}

close out;
close out1;




初学perl ,上面的东西是自己学捣鼓的,其中用了out当缓冲,有没有简单方法实现我的目标
ps:分析2是自己百度参考的,有些语句不是很清楚,可否讲解下
发表于 2015-8-31 10:19:33 | 显示全部楼层
就是数1的个数嘛!
将1的个数当作hash的key~ 然后sort
不过要是个数有重复的,就要特别处理下了~~
您需要登录后才可以回帖 登录 | 注册

本版积分规则

关闭

站长推荐 上一条 /2 下一条

×

小黑屋| 关于我们| 联系我们| 在线咨询| 隐私声明| EETOP 创芯网
( 京ICP备:10050787号 京公网安备:11010502037710 )

GMT+8, 2024-4-27 04:29 , Processed in 0.016266 second(s), 8 queries , Gzip On, Redis On.

eetop公众号 创芯大讲堂 创芯人才网
快速回复 返回顶部 返回列表