關鍵變化我有以下格式輸入文件合計不等時在Perl
ant,1
bat,1
bat,2
cat,4
cat,1
cat,2
dog,4
我需要聚合的COL2每個鍵(列1),所以其結果是:
ant,1
bat,3
cat,7
dog,4
其他注意事項:
- 假定輸入文件排序
- 釷Ë輸入文件相當大(約100萬行),所以我不想使用數組和佔用內存
- 當我們讀它的每個輸入行應該進行處理,並移動到下一行
- 我需要將結果寫入到一個不過outFile
- 我必須這樣做在Perl,但僞代碼或算法將幫助剛剛精細
謝謝!
這就是我想出的...想看看這是否可以寫得更好/優雅。
open infile, outFile
prev_line = <infile>;
print_line = $prev_line;
while(<>){
curr_line = $_;
@prev_cols=split(',', $prev_line);
@curr_cols=split(',', $curr_line);
if ($prev_cols[0] eq $curr_cols[0]){
$prev_cols[1] += curr_cols[1];
$print_line = "$prev_cols[0],$prev_cols[1]\n";
$print_flag = 0;
}
else{
$print outFile "$print_line";
$print_flag = 1;
$print_line = $curr_line;
}
$prev_line = $curr_line;
}
if($print_flag = 1){
print outFile "$curr_line";
}
else{
print outFile "$print_line";
}
作業多嗎? – DVK