텍스트 파일에서 중복 항목 제거

텍스트 파일에서 중복 항목 제거

명령을 사용하여 일부 정렬을 수행하고 있습니다 uniq -d. 내가 원하는 결과를 얻지 못했습니다.

내 파일은 다음과 같습니다.

>TCONS_00000066 174     206  33
>TCONS_00000066 210     281  72
>TCONS_00000066 227     316  90
>TCONS_00000066 285     338  54
>TCONS_00000066 335     373  39
>TCONS_00000066 342     377  36
>TCONS_00006042 493     552  60
>TCONS_00006042 562     606  45
>TCONS_00006042 630     686  57
>TCONS_00006042 622     699  78
>TCONS_00006042 614     724  111
>TCONS_00006042 696     767  72

열 1의 중복 항목을 제거하고 싶습니다.

산출:

     >TCONS_00000066
     >TCONS_00006042

하지만 매번 빈 파일이 나타납니다.

uniq -d 파일 > 새 파일

다른 방법이 있나요?

답변1

Uniq는 행의 나머지 부분을 정렬하거나 삭제하지 않습니다. uniq -d중복된 행만 표시됩니다. 이는 각 행을 한 번 표시하는 것과 다릅니다(즉, -d두 번 연속으로 표시되어야 함).

먼저 흥미롭지 않은 열을 잘라낸 다음 정렬하고 고유한 요소를 찾으세요.

cut -d ' ' -f 1 your_file | sort | uniq

답변2

awk를 사용할 수 있습니다.

awk '!x[$1]++ { print $1 }' file

답변3

uniq -d입력에 중복 라인만 나열합니다. 파일에 중복 라인(전체로 간주)이 포함되어 있지 않으므로 아무것도 출력되지 않습니다.

원하는 결과를 얻으려면 첫 번째 열을 추출하고 필터링해야 합니다.

cut -d\  -f1 file | uniq

파일이 정렬되어 있다고 가정합니다( uniq인접한 줄만 필터링합니다).

cut -d\  -f1 file | sort -u

awk아니면 지적한대로 할 수 있습니다탈레진, 첫 번째 열만 출력하는 약간의 변형이 있습니다.

awk '!x[$1]++ { print $1 }' file

관련 정보