다음과 같은 파일이 있다고 가정해 보겠습니다.
NW_006521251.1 428 84134
NW_006521251.1 511 84135
NW_006521038.1 202 84155
NW_006521038.1 1743 84153
NW_006521038.1 1743 84154
NW_006520495.1 198 84159
NW_006520086.1 473 84178
NW_006520086.1 511 84180
열 1과 2를 기반으로 고유한 행을 유지하고 싶습니다(즉, 첫 번째 열의 다른 레이블 아래에서 숫자가 반복될 수 있으므로 두 번째 열뿐만 아니라).
이 출력을 얻을 수 있도록( NW_006521038.1 1743
목록에서 두 번째 복제본 제거):
NW_006521251.1 428 84134
NW_006521251.1 511 84135
NW_006521038.1 202 84155
NW_006521038.1 1743 84153
NW_006520495.1 198 84159
NW_006520086.1 473 84178
NW_006520086.1 511 84180
awk를 사용하여 이를 수행할 수 있는 방법이 있습니까? 쓸 수 없다 uniq file
.
답변1
이 문제를 해결하기 위해 고안된 "유명한" awk 관용구가 있습니다. 당신이하고 싶은 일 :
awk '!seen[$1,$2]++' file
이렇게 하면 2개 열의 키를 사용하여 "표시된" 연관 배열이 생성됩니다. 키를 처음 발견할 때 값이 0이 되도록 사후 증가 연산자를 사용하십시오. 키를 처음 볼 때 "참" 결과를 얻으려면 부정 연산자를 사용하세요.
답변2
출력이 정렬되는 것이 마음에 들지 않으면 다음을 수행하십시오.
sort -u -k1,2 file
-u
- 고유한-k1,2
- 필드 1과 2를 키로 함께 사용