두 번째 열의 값이 동일하면 값을 합산

두 번째 열의 값이 동일하면 값을 합산

Unix 스크립트를 사용하여 열 2의 텍스트가 동일하면 열 1의 값을 더하고 합계를 인쇄하려고 합니다. 다음과 같은 파일이 있습니다.

7 GeneA
2 GeneB
6 GeneC
2 GeneB
9 GeneA

출력이 다음과 같기를 원합니다.

16 GeneA
4  GeneB
6  GeneC

감사해요

답변1

사용스크립트:

awk '{ a[$2]+=$1 }END{ for(i in a) print a[i],i }' file
  • a[$2]+=$1- 각 그룹의 가치를 누적 ("그룹"두 번째 필드의 고유 값으로 간주되어 배열 a인덱스로 사용됩니다)

산출:

16 GeneA
4 GeneB
6 GeneC

답변2

GNU와 함께datamash 주문하다.

datamash groupby 2 sum 1 <infile.txt 

답변3

Perl을 사용한 솔루션은 다음과 같습니다.

perl -aE '$F{$F[1]}+=$F[0];END {say "$F{$_} $_" for keys %F}' file 

답변4

그리고구글 스매시 도구' subtotal:

$ sort --key 2 yourFile.txt | subtotal --key 2 --sum 1 --delim ' '

7 GeneA
9 GeneA
16 

2 GeneB
2 GeneB
4 

6 GeneC
6 

관련 정보