이 명령이 왜 나오는지 모르겠습니다.
sort filename.txt | uniq
이 파일을 처리할 수 없습니다:http://packetstormsecurity.com/files/32089/koran.gz.html
나는 또한 다음을 사용했습니다.
awk '!seen[$0]++' koran.txt
perl -ne 'print unless $dup{$_}++;' koran.txt
그리고 이 특정 파일을 작업하는 사람은 아무도 없는 것 같습니다. 이유를 아시나요?
답변1
don_crissti
그의 의견에는 주요 문제가 강조되어 있습니다. 그는 다음 명령을 실행하여 파일 형식을 결정합니다.
file koran
...산출:
ASCII C++ program text, with CRLF, LF line terminators
끝에 있는 CR
(캐리지 리턴 - 16진수 값) 문자를 제거해야 합니다.\x0D
일부입력 파일의 행. 이는 CR
Microsoft Windows 스타일 줄 끝(CRLF)의 첫 번째 문자입니다. 두 번째(MS) 문자는 LF
(개행)입니다. Single은 LF
Unix 스타일 줄 종결자에 유효한 단일 문자입니다. CR
파일에서 원하지 않는 문자를 제거하는 한 가지 방법 은 다음과 같습니다 .
sed 's/\x0D$//' koran | sort -u
sort
"동등한 실행 중 첫 번째만 출력" 옵션이 있으므로 -u
실제로 파이프할 필요가 없습니다.uniq
CR
아니면 이것이 유일한 것이라고 확신한다면인쇄되지 않음파일에 문자가 있으면 문자 정렬 -i
옵션을 사용하면 됩니다 ignore nonprinting
.CR
sort -iu koran
업데이트: 다음 사용자의 의견을
기반으로 합니다 .@Francesco Mantovani
일부이전에 언급되지 않은 다른 파일의 입력 줄에도 CR 앞에 공백이 있습니다. 이는 다음을 통해 쉽게 처리할 수 있습니다 sed
.
sed 's/[[:space:]]\+$//' male.txt female.txt | sort -u
sed -n l
그런데, "list current line" man sed
명령 에 따라 출력을 파이핑하여 차이점을 발견했습니다.l
시각적으로 명확함형태".