2014-02-27 5 views
3

다음 명령을 사용하여 파일에서 중복 행을 삭제할 수 있습니다. 1) sort -u 및 uniq 명령. sed 또는 awk를 사용하여 가능합니까?유닉스에서 파일의 중복 행을 삭제하는 방법은 무엇입니까?

+2

당신이 종류가있는 경우 및 UNIQ, 당신은 왜 나오지도 또는 AWK을 사용 하시겠습니까 사용하십시오 숫자로 구성하면? – Skriptotajs

+0

글쎄, 가능하다면, 내가 기억하는 한, 둘 다 완전한 언어를 튜링하고 있기 때문이다. 문제는 @Skriptotajs가 지적한대로 당신이 그들을 사용할 것입니다. – Rubens

답변

9

는 "유명한"AWK 관용구가 있습니다 :

awk '!seen[$0]++' file 

그것은 메모리에 독특한 라인을 유지하기 위해이 있지만 파일의 순서를 유지합니다. 파일이 다음 명령의 조합으로 사용할 수있는 정렬되지 않은 경우 우리는이 나오지 명령을

sed -E '$!N; /^(.*)\n\1$/!P; D' filename 

을 사용할 수 있습니다 정렬 후

+0

이것은 멋져 보이지만 어떻게 든 macOS Sierra에서 나를 위해 작동하지 않습니다. 작은 파일에 대해서만 – mherzl

+0

, 파일이 더 크면 램 + 스왑 - 작동하지 않음 –

+0

"작은"의 정의. GB 단위로 측정 –

0

.

sort filename | sed -E '$!N; /^\(.*\)\n\1$/!P; D' 
0

정렬 및 유니크 이들 만 중복을 제거하면됩니다. cat filename | 정렬 | UNIQ >> filename2

의 파일 종류 -n

관련 문제