Chinaunix
标题:
关于一个累加的问题
[打印本页]
作者:
nanshanjin
时间:
2015-07-27 16:16
标题:
关于一个累加的问题
这里有一个文件,格式如下:
01 2
01 4
... ...
02 1
02 3
... ...
03 6
... ...
把分别把01,02,03.。。。对应的那列数字累加,输出为
01 sum
02 sum
03 sum
... ...
怎么实现?
作者:
substr函数
时间:
2015-07-27 17:03
#!/usr/bin/perl
my $col1;
my $sum;
while (<DATA>) {
if (/^\./) {
print "$col1\t$sum\n";
$sum = 0;
}
else {
my @line = split;
$col1 = $line[0];
$sum += $line[1];
}
}
__DATA__
01 2
01 4
... ...
02 1
02 3
... ...
03 6
... ...
复制代码
作者:
MMMIX
时间:
2015-07-27 17:07
回复
2#
substr函数
我十分怀疑 ... ... 是输入数据的一部分。
作者:
substr函数
时间:
2015-07-27 17:10
回复
3#
MMMIX
1楼发的
格式如下
01 2
01 4
... ...
02 1
02 3
... ...
03 6
... ...
复制代码
作者:
MMMIX
时间:
2015-07-27 17:13
回复
4#
substr函数
那你应该在最后再输出一行 ... ... 呀
作者:
substr函数
时间:
2015-07-27 17:20
回复
5#
MMMIX
谢谢大神指点!
#!/usr/bin/perl
my $col1;
my $sum;
while (<DATA>) {
if (/^\./) {
print "$col1\t$sum\n";
$sum = 0;
}
else {
my @line = split;
$col1 = $line[0];
$sum += $line[1];
}
}
print "... ...\n";
__DATA__
01 2
01 4
... ...
02 1
02 3
... ...
03 6
... ...
复制代码
作者:
nanshanjin
时间:
2015-07-27 19:27
... ...是省略号
作者:
b114213903
时间:
2015-07-27 20:33
#!/usr/bin/perl
use strict;
my $sum={};
while(<DATA>){
chomp;
my ($key,$value)=split;
$sum->{$key}+=$value;
}
foreach my $key (sort {$a<=>$b} keys %{$sum}){
print "$key\t$sum->{$key}\n";
}
复制代码
作者:
rubyish
时间:
2015-07-28 01:01
perl abc.pl data > save
#!/usr/bin/perl
my ( $K, $V ) = '';
while (<DATA>) {
my ( $k, $v ) = split;
if ( $K ne $k ) {
print $K, "\t", $V, $/ if $K;
( $K, $V ) = ( $k, 0 );
}
$V += $v;
}
print $K, "\t", $V, $/;
复制代码
作者:
nanshanjin
时间:
2015-07-28 09:19
$sum->{$key}是什么意思?
作者:
nanshanjin
时间:
2015-07-28 09:20
回复
8#
b114213903
$sum->{$key}是什么意思?
作者:
815138698
时间:
2015-07-28 19:34
回复
10#
nanshanjin
哈希的引用
作者:
清泉一边
时间:
2015-08-14 11:17
#!/usr/bin/perl -w
use strict;
my %hash;
while (<DATA>){
my( $k,$v) = split;
push @{$hash{$k}} ,$v;
}
foreach my $k(sort keys %hash){
print "$k\t";
my $sum = 0;
$sum += $_ for @{$hash{$k}};
print "$sum\n";
}
__DATA__
01 2
01 4
02 1
02 3
03 6
复制代码
回复
1#
nanshanjin
作者:
sunzhiguolu
时间:
2016-03-19 20:54
perl -alne "{$h{$F[0]}+=$F[-1]}END{print \"$_ $h{$_}\" for keys %h}" ur.txt
复制代码
欢迎光临 Chinaunix (http://bbs.chinaunix.net/)
Powered by Discuz! X3.2