명령을 사용하여 일부 정렬을 수행하고 있습니다 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