다음과 같은 테이블 형식의 파일이 있습니다.
abc00000000 1 643301 643374 Ile AAT 0 0 80.6
abc00000000 2 1278112 1278193 Ser GCT 0 0 86.2
abc00000000 3 1278382 1278463 Ser GCT 0 0 87.4
abc00000000 4 1282753 1282824 Glu TTC 0 0 70.9
abc00000001 1 138441 138512 Glu TTC 0 0 70.9
abc00000001 2 186490 186571 Leu AAG 0 0 71.6
abc00000002 1 1342954 1343060 Tyr GTA 1342991 1343024 78.3
abc00000002 2 1359693 1359620 Val AAC 0 0 75.1
abc00000002 3 943029 942957 Val CAC 0 0 73.2
처음 두 열에만 관심이 있습니다.
첫 번째 열은 DNA 비계의 이름을 나타내고 두 번째 열은 이러한 비계에서 뭔가 다른 일이 발생하는 횟수입니다(매번 다른 돌연변이라고 가정해 보겠습니다).
각 비계에 대한 돌연변이 수를 제공하는 명령을 찾으려고 합니다. 따라서 비계 "abc00000000"에는 4개의 돌연변이가 있고, 비계 "abc00000001"에는 2개의 돌연변이가 있습니다.
"awk"가 작동할 수도 있지만 올바른 명령을 찾을 수 없습니다. 감사해요
답변1
각 스캐폴드 이름이 첫 번째 열에 나타나는 횟수를 세고 싶은 것 같습니다. 그렇다면 다음과 같이 할 수 있습니다.
$ sort file | awk '{print $1}' | uniq -c
4 abc00000000
2 abc00000001
3 abc00000002
또는 파일이 커서 정렬하고 싶지 않은 경우:
$ awk '{a[$1]++}END{for(i in a){print i, a[i]}}' file
abc00000000 4
abc00000001 2
abc00000002 3
답변2
이 awk 방법은 당신에게 효과적입니다:
awk '{ col1[$1]+=$2; next } END { for ( i in col1) print i, col1[i] }'
답변3
bash 명령을 사용하십시오.
$ cut -d" " -f 1 file.txt 정렬 |
$ cut -d"\t" -f 1 file.txt |sort|UNIQLO-c