|  | 
 
| 
原文件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是自己百度参考的,有些语句不是很清楚,可否讲解下
 | 
 |