2 천만 개가 넘는 레코드가있는 파일이 있고 첫 번째 열의 고유 한 값마다 5 번째 열을 더하고 싶습니다. 아래 코드를 사용했습니다. (A)의awk에서 연관 배열 제한. 메모리 사용량
cat test.txt |awk 'BEGIN{FS="|"}{a[$1]+=$5;}END{for(i in a) print i"|"a[i];}'
최대 값은 [I]를 출력 어떤 솔루션 ... 친절 도와 9999
제한된다 ??
2 천만 개가 넘는 레코드가있는 파일이 있고 첫 번째 열의 고유 한 값마다 5 번째 열을 더하고 싶습니다. 아래 코드를 사용했습니다. (A)의awk에서 연관 배열 제한. 메모리 사용량
cat test.txt |awk 'BEGIN{FS="|"}{a[$1]+=$5;}END{for(i in a) print i"|"a[i];}'
최대 값은 [I]를 출력 어떤 솔루션 ... 친절 도와 9999
제한된다 ??
$ 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
위의 데이터로 어떤 점이 좋습니까?
1 | 8 2 | 34592 3 | 34535354 ....이 작업 중입니다 .. 내 파일이 작동하지 않는 것을 알고 있습니다. :( – user6677057
정말 합계가 틀리지 않습니까? (실제로는 9999)'grep' 일부 입자 색인 ('$ 1'), Pastebin에 업로드하고 URL을 게시 하시겠습니까? –
열 5의 값에 숫자 값과 문자열이 모두 포함되어 있기 때문에 – user6677057
awk는 '9999'에서 계산을 중지하지 않습니다 **. 당신이 아직 우리에게 말하지 않은 당신의 문제에 관해 뭔가 다른 것이 있습니다. 더 작은 파일은 어떻게됩니까? 예상 한 결과를 얻으십니까? 고유 한'$ 1' 값을 모두 출력합니까? 문제가 메모리 사용량이라고 생각하는 오류 메시지 또는 다른 이유가 있습니까? 합계가 9999보다 큰'$ 1 '을 (를) 가지고 있습니까? –
위의 o/p에서이 명령을 실행했을 때 $ 2에 9999보다 큰 값이 있습니다. cat file.txt | awk 'BEGIN {FS = "|"} $ 2> 9999' 그러나 사용 후 정렬 -t "|" -k2 파일 | 꼬리 두 번째 열의 값은 9999 개까지입니다 ... 왜 그렇게 ?? – user6677057
'sort'는 숫자가 아닌 알파벳순 정렬입니다. 'sort -n ... '을 시도하십시오 –