uniq가 유니코드와 문자가 하나만 있는 줄을 무시하는 이유는 무엇입니까?

uniq가 유니코드와 문자가 하나만 있는 줄을 무시하는 이유는 무엇입니까?

미국 사전과 영국 사전을 하나의 큰 사전으로 병합하려고 하고 상위 집합에서 중복된 사전을 모두 제거하려고 하는데 uniq가 "épée" 같은 단어나 단일 문자를 출력하지 않는 것 같습니다.

이것이 내가 사용하려고 하는 것입니다:

LC_COLLATE=en_US.UTF-8 cat american-english british-english |sort|uniq -u > unique_sorted_combined_dict

내가 이렇게 하면:

LC_COLLATE=en_US.UTF-8 cat american-english british-english |sort > sorted_combined_dict

"épée" 및 기타 유사한 단어가 단일 문자와 함께 나타납니다.

여기에 뭔가 빠졌나요 uniq?

차이점이 있다면 Ubuntu 12.10에서 GNU coreutils의 uniq를 사용하고 있다는 점에 유의해야 합니다.

답변1

LC_COLLATE명령에만 설정하고 cat(사용하지 않음) sort및 에는 설정 해야 합니다 uniq.

또한 LC_CTYPEutf-8로 설정해야 할 수도 있습니다. 그렇지 않으면 혼란이 발생할 수 있습니다. 내가 설정할게LC_ALL도착하다en_US.UTF-8

uniq -u보고만고유한좋아요. 따라서 이러한 한 글자 단어가 여러 번 나타나면 나타나지 않는 것이 정상입니다.

내 시스템에서는무거운 검두 번 나타납니다.

$ cat american-english british-english | sort | grep -x 'épée'
épée
épée

아마도 당신은 sort | uniq또는 sort -u.

관련 정보