|
马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。
您需要 登录 才可以下载或查看,没有账号?注册
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是自己百度参考的,有些语句不是很清楚,可否讲解下 |
|