Sort -u 함수 명령이 작동하지 않습니다.

Sort -u 함수 명령이 작동하지 않습니다.

첨부된 사진에서 보시다시피 스크린샷

매우 큰 단어 목록 파일을 sort 명령을 사용하여 정렬한 후 Split 명령을 사용하여 분할했습니다. 거기에서 나열된 단어가 az 순서로 정렬되어 있음을 확인했습니다.

그런 다음 명령을 실행했는데 sort -u고유 단어가 제거되지 않은 것을 확인했습니다. (파일이 좀 작아서 일부를 삭제했지만 전부는 아니었습니다.)

내가 뭘 잘못했나요?

전반적인 목표: 나의 전반적인 목표는 모든 단어 목록을 가져와 이를 큰 파일(25gig)에 넣은 다음 고유한 단어를 정렬 및 제거하고(약 40% 줄임) 파일을 관리 가능한 크기로 분할하는 것입니다. Windows 프로그램이나 Linux 명령이 작동하지 않습니다.

답변1

sort -u 고유 삭제철사. 따라서 잠재적인 문제는 이 세 줄이 동일하지 않아 sort -u모두 남게 된다는 것입니다.

foo
foo 
foo 

아무리 자세히 살펴봐도 이유를 알아차리기 어렵습니다. 즉, 다음 xxd과 같은 16진수 덤프를 수행하지 않는 한:

0000000: 666f 6f0a 666f 6f20 0a66 6f6f e280 820a  foo.foo .foo....

0x0a16진수 덤프에 익숙하지 않은 경우 개행 문자입니다. 따라서 세 가지 "foo"는 다음과 같습니다.

666f 6f         0a
666f 6f20       0a
666f 6fe2 8082  0a

아하! 이는 실제로 foo, foo<SPACE>( 0x20) 및 foo<EN-SPACE>( 0xe28082, UTF-8로 인코딩된 U+2002)입니다.

비슷한 일을 겪었을 수도 있습니다. 보이지 않는 문자를 표시하려면 16진수 편집기나 텍스트 편집기 세트를 사용해야 합니다. 예를 들어, 에 gvim포함된 내용은 다음과 같습니다 :set list. 방금 커서 아래에 어떤 문자가 있는지 확인하기 위해 명령을 입력했는데 gaU+2002로 표시됩니다. 또한 줄 끝( $)이 예상한 위치에 있지 않고 두 줄 뒤에 공백이 있는 것을 볼 수 있습니다.

gvim 데모 스크린샷: 설정 목록

관련 정보