作者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