나는 다음과 같은 데이터를 가지고 있습니다:
300>BRIAN
100>DANY
200>NICOLE
105>DANY
다음을 생성하고 싶습니다.
300>BRIAN
205>DANY
200>NICOLE
구분 기호는 이며 >
첫 번째 열은 SUM이어야 합니다.
답변1
의무적 인GNU 데이터 혼합해결책
datamash -st '>' groupby 2 sum 1 < data | datamash -t '>' reverse
300>BRIAN
205>DANY
200>NICOLE
답변2
awk를 사용하세요:
awk -F\> '{pivot[$2]+=$1} END{for (x in pivot) print pivot[x]">"x}' infile.txt
출력은 다음과 같습니다
300>BRIAN
205>DANY
200>NICOLE
설명하다:
column2의 각 uniqe 필드에 대해 상대적인 첫 번째 열 값을 합산한 다음 끝에서 피벗 배열을 반복하고 합계를 먼저 인쇄한 다음 해당 문자열을 인쇄합니다.
답변3
Miller를 사용하여 데이터를 헤더 없는 CSV 파일로 읽고 >
필드 구분자로 두 번째 필드로 그룹화할 때 첫 번째 필드의 합계를 계산합니다. 그런 다음 합계가 포함된 새 필드가 첫 번째가 되도록 결과 필드의 순서를 변경합니다.
$ mlr --csv --fs '>' -N stats1 -a sum -f 1 -g 2 then reorder -f 1_sum file
300>BRIAN
205>DANY
200>NICOLE
지정된 필드는 1_sum
작업에 의해 생성되며 stats1
합계를 포함합니다. 이는 reorder
운용에 사용됩니다.