문자열의 발생 횟수를 계산합니다.

문자열의 발생 횟수를 계산합니다.

다음 형식의 대규모 데이터베이스가 있습니다.

0500506 gi|561108321|ref|NC_018143.2|   71446   0 
0500506 gi|561108321|ref|NC_018143.2|   71447   0
0500508 gi|561108321|ref|NC_018143.2|   71449   0
0500509 gi|561108321|ref|NC_018143.2|   71447   0

내가 하고 싶은 것은 아래와 같이 세 번째 열에 각각의 발생 횟수를 포함하는 새 테이블을 만드는 것입니다.

71446 1 0500506
71447 2 0500506,0500509
71449 1 0500508

중요한 것은 전체 행이 일치하지 않으므로 단일 열의 값만 일치하는지 확인하고 싶습니다. 다음 솔루션 중 하나를 사용할 수 있다고 가정합니다. grep을 사용하여 총 발생 횟수 계산, 하지만 어떻게 될지는 잘 모르겠습니다.

정말 고마워요, 멩

답변1

awk작업에 더 달려있을 수 있습니다.

awk '{sep=$3 in a?",":"";b[$3]++;
     a[$3]=a[$3]sep$1}; END{for (k in a) print k, b[k], a[k]}' file

관련 정보