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는 줄의 마지막 문자를 나타냅니다.