2012-06-18 2 views
2

나는 한 파일에서 패턴을 얻고 다른 파일에서 행을 추출하기 위해 grep -f을 사용 해왔다. 결과는 다음과 같다 :grep 명령의 그룹화

지금은 처음 세 열을 기반으로 결과 그룹에 필요하고, 각 그룹에 대한 열 4의 합계를 계산
1 11294199 11294322 40 10 123 0.0813008 
1 11294199 11294322 41 6 123 0.0487805 
1 11294199 11294322 42 10 123 0.0813008 
1 11294199 11294322 43 2 123 0.0162602 
1 11293454 11293544 51 1 90 0.0111111 
1 11293454 11293544 52 2 90 0.0222222 
1 11291356 11291491 54 6 135 0.0444444 
1 11291356 11291491 55 8 135 0.0592593 
1 11291356 11291491 56 3 135 0.0222222 

:

1 11294199 11294322 (40+41+42+43) 
1 11293454 11293544 (51+52) 
1 11291356 11291491 (54+55+56) 

어떻게 나는 그런 결과를 얻는다? 이것을 달성하기위한 grep의 옵션은 무엇입니까? thx

답변

5

원하는 것을 수행하려면 awk이 필요합니다. 이 시도 :

awk '{ array[$1 "\t" $2 "\t" $3] += $4 } END { for (i in array) print i "\t" array[i] }' file.txt 

결과 :

1 11294199 11294322 166 
1 11291356 11291491 165 
1 11293454 11293544 103 

HTH