2016-08-18 18 views
0

私は2000万を超えるレコードを持つファイルを持っており、第1列の一意の値ごとに5列目を合計したいので、以下のコードを使用しました。awkの連想配列の制限です。メモリ使用量

cat test.txt |awk 'BEGIN{FS="|"}{a[$1]+=$5;}END{for(i in a) print i"|"a[i];}' 

最大値は、[i]の出力に任意のソリューション...親切に私を助けて9999

に制限されています?

+1

awkは** 9999でカウントを停止しません。あなたがまだ私たちに語っていないあなたの問題について何か他のものがあります。小さなファイルではどうなりますか?期待している結果が得られますか?一意の '$ 1'値の出力をすべて得ますか?エラーメッセージや、メモリ使用量と考える他の理由がありますか?合計が9999より大きい '$ 1 'を持っていますか? –

+0

上記のo/pでこのコマンドを実行したとき、$ 2の9999より大きい値があります。 cat file.txt | awk 'BEGIN {FS = "|"} $ 2> 9999' ただし、使用後 sort -t "|" -k2ファイル|テール 2番目の列の値は9999までです...なぜそうですか? – user6677057

+0

'sort'はアルファベット順で、数値ではありません。 'sort -n ...'を試してください –

答えて

1
$ cat > file 
1||||a|NOTICE A LETTER IN FIFTH 
1||||5 
2||||57 
2||||34535 
3||||34535353 
3||||1 
1||||1 
$ cat file|awk 'BEGIN{FS="|"}{a[$1]+=$5;}END{for(i in a) print i"|"a[i];}' 
1: 6 
2: 34592 
3: 34535354 

上記のデータではどうなりますか?

+0

1 | 8 2 | 34592 3 | 34535354 ....これは動作しています..私は私のファイルが動作していないことを知っていません.. :( – user6677057

+0

あなたは本当に合計aren実際には9999ですか?grepいくつかの粒子インデックス( '$ 1')、PastebinにアップロードしてURLを投稿しますか? –

+0

これは、列5の値が数値と文字列の両方を持つためですか? – user6677057

関連する問題