作者adu (^_^)
看板Perl
标题[请益] 如何写出累加的script?
时间Sun May 24 10:08:12 2009
想请教版友,如何写出由後往前累加的script?
资料型态长这个样子:
GY*20 49 74
DS*21 38 63
TE*24 23 28
FF*25 11 21
GT*26 12 14
^^
要将这个数直从後往前累加...
在这个例子里面希望得到:
133
84
46
23
12
(左边的数字(*後面的)可能不连续)
不知道有没有办法办到..
要处理的资料量很大,现在用计算机按ing...Orz
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
PS.有想过有要hash试试
my %f;
while ( <DATA> ) {
my ($k,$w,$v) = m/\w\w\*(\d+)\s(\d+)\s(\d+)/;
$f{ $k } ||=0, $f{ $k }+=$w;
}
这样%f就是含有数值的hash,不过接下来不知道该怎麽从後面加回来
可能不是个好方法>"<
--
37m﹡
--
※ 发信站: 批踢踢实业坊(ptt.cc)
◆ From: 218.174.36.214
1F:→ reizarc:其实数值不多的话 乾脆算完再到过来印就好了 05/24 11:30
2F:→ reizarc:能用计算机按的量 应该也不会多到哪里去吧 .. ? 05/24 11:31
3F:→ adu:回r大:真的很多耶XD 大概30*6*200...36000笔,算好以後还会 05/24 13:26
4F:→ adu:花key in的时间,所以才想要尽量用程式解决的>"< 05/24 13:26
5F:推 kornelius:这种题目之前不是解过了吗? 05/24 17:55
6F:推 kornelius:哦!是要倒着累加 XD 05/24 17:56
7F:推 kornelius: tail -r file > reversed_file # ? 05/24 18:07
8F:→ kornelius:36000 也还好吧,数字算小了呀 05/24 18:08
9F:→ frank1983:如果你有 tac 这个程式的话可在 command line 输入: 05/24 19:23
10F:→ frank1983:tac f.txt | perl -F"\s+" -anE 'say $v+=$F[1]' | tac 05/24 19:24
11F:→ frank1983:f.txt 是你要处理的档案名称 05/24 19:25
12F:→ adu:推~谢谢各位! 05/25 15:25