2012-02-03 4 views
2

파일에서 중복 항목을 제거하고 싶습니다. 파일은 다음과 같습니다.쉘 파일에서 중복 항목을 제거하는 스크립트

xyabcd1:5!b4RlH/IgYzI:cvsabc 
xyabcd2:JXfFZCZrL.6HY:cvsabc 
xyabcd3:mE7YHNejLCviM:cvsabc 
xyabcd1:5!b4RlH/IgYzI:cvsabc 
xyabcd4:kQiRgQTU20Y0I:cvsabc 
xyabcd2:JXfFZCZrL.6HY:cvsabc 
xyabcd1:5!b4RlH/IgYzI:cvsabc 
xyabcd2:JXfFZCZrL.6HY:cvsabc 
xyabcd4:kQiRgQTU20Y0I:cvsabc 
xyabcd2:JXfFZCZrL.6HY:cvsabc 

셸 스크립트를 사용하여이 파일에서 중복을 제거하려면 어떻게합니까?

정렬 맨 페이지에서

답변

4

:

-u, -c와 --unique , 엄격한 순서를 확인;

sort -u yourFile 

가해야 동일한 런의 첫 -c 출력없이. 당신이 입력 파일의 순서를 변경하지 않으려면

2

, 당신이 할 수 있습니다 : 파일이 충분히 작은 경우,

 
$ awk '!v[$0]{ print; v[$0]=1 }' input-file 

또는 (이하 40 억 개 라인, 더 라인이 없는지 확인합니다) 40 억 번 반복 할 수있다 :

 
$ awk '!v[$0]++' input-file 

AWK의 구현에 따라 미만 2^32 라인 긴되는 파일에 대해 걱정할 필요가 없습니다 수 있습니다. 문제는 같은 줄을 2^32 번 볼 경우 배열 값의 정수가 오버 플로우 될 수 있고 중복 줄의 2^32 번째 인스턴스 (또는 2^31st)가 두 번째로 출력된다는 것입니다. 실제로 이것은 문제가되지 않을 가능성이 매우 큽니다!

관련 문제