sort -u (unique)는 여러 키에는 작동하지만 단일 키에는 작동하지 않습니다.

sort -u (unique)는 여러 키에는 작동하지만 단일 키에는 작동하지 않습니다.

GNU 정렬을 사용하세요. 반복되는 키를 기반으로 행 집합의 첫 번째 행만 인쇄하고 싶습니다.

-k1,2예상대로 작동합니다. 정렬된 첫 번째 행만 출력됩니다.

printf %s\\n 'a a c' 'a a b' 'a a a' | sort -u -k1,2 -t' '
# a a a

-k1하다아니요예상대로 작동합니다. 정렬된 3개 행이 모두 출력됩니다.

printf %s\\n 'a a c' 'a a b' 'a a a' | sort -u -k1 -t' '
# a a a
# a a b
# a a c

의 모든 변형에 대해 이것이 정상입니까 sort, 아니면 GNU 유형에만 해당됩니까? 나타나기 더 쉬운 것 같아요“예상치 못한 결과”, man sort그림과 같이 두 번째 키 번호는임의로 선택할 수 있는:-k, --key=POS1[,POS2]

-k1,1는 적용되지만 -u일반 정렬(예: no -u)은 에만 적용됩니다 -k1.

답변1

나는 이것이 다음과 같은 POSIX 기본 동작이라고 생각합니다.매뉴얼 페이지:

-k 필드 시작[유형][,필드 끝[유형]]

키 필드는 field_start에서 시작하여 field_end에서 끝나도록 정의해야 합니다. 단, field_start가 줄 끝을 넘어 확장되거나 field_end 이후로 확장되지 않는 한, 이 경우 키 필드는 비어 있습니다. 누락된 field_end는 줄의 마지막 문자를 나타냅니다.

관련 정보