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