看板 Perl 關於我們 聯絡資訊
想請教版友,如何寫出由後往前累加的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
reizarc:其實數值不多的話 乾脆算完再到過來印就好了 05/24 11:30
reizarc:能用計算機按的量 應該也不會多到哪裡去吧 .. ? 05/24 11:31
adu:回r大:真的很多耶XD 大概30*6*200...36000筆,算好以後還會 05/24 13:26
adu:花key in的時間,所以才想要盡量用程式解決的>"< 05/24 13:26
kornelius:這種題目之前不是解過了嗎? 05/24 17:55
kornelius:哦!是要倒著累加 XD 05/24 17:56
kornelius: tail -r file > reversed_file # ? 05/24 18:07
kornelius:36000 也還好吧,數字算小了呀 05/24 18:08
frank1983:如果你有 tac 這個程式的話可在 command line 輸入: 05/24 19:23
frank1983:tac f.txt | perl -F"\s+" -anE 'say $v+=$F[1]' | tac 05/24 19:24
frank1983:f.txt 是你要處理的檔案名稱 05/24 19:25
adu:推~謝謝各位! 05/25 15:25