중복된 내용을 제거하는 linux uniq 명령어 사용법

중복된 내용을 제거하는 linux uniq 명령어 사용법

 

uniq 는 입력 내용에서 중복된 항목을 제거하는 커맨드 라인 유틸리티입니다.

보통 sort 명령어로 정렬을 한 결과를 파이프로 uniq 에 전달해서 중복 내용을 제거합니다.

 

input.txt

bat abc apple Abc BALL ABc bat

 

 

기본 사용법

예제 파일을 sort 로 정렬한 결과한 후에 uniq 에 전달하면 중복되는 단어인 bat 는 하나만 표시합니다.

$ sort input.txt | uniq abc Abc ABc apple BALL bat

 

유일한 라인만 표시

-u 옵션을 사용하면 중복되지 않는 라인만 표시합니다. 즉 중복된 line 인 bat 는 표시하지 않습니다. 

$ sort input.txt | uniq -u abc Abc ABc apple BALL

 

중복되는 라인만 표시

-d 옵션을 사용하면 -u 와는 반대로 중복되는 라인만 표시하며 아래 예제는 중복되는 line인 bat 만 표시합니다.

$ sort input.txt | uniq -d bat

 

중복 횟수 세기

-c 옵션을 사용하면 각 라인별 중복 횟수를 계산해서 표시합니다. bat 만 중복되므로 2 가 표시되고 나머지는 다 1이 표시됩니다.

$ sort input.txt | uniq -c 1 abc 1 Abc 1 ABc 1 apple 1 BALL 2 bat

 

-c-d-u 옵션과도 같이 사용할 수 있습니다. 아래는 중복 line 의 횟수만 표시합니다.

$ sort input.txt | uniq -c -d 2 bat

 

uniq -c 의 결과는  출현 빈도에 따라 오름차순으로 표시됩니다. 만약 내림차순으로 변경하려면 uniq 의 결과를 다시 sort 로 받아서 정렬하면 됩니다.

$ sort input.txt | uniq -c | sort -nr 2 bat 1 BALL 1 apple 1 ABc 1 Abc 1 abc

대소문자 무시

uniq 는 기본적으로 대소문자를 구분하므로 'abc' 와 'AbC' 를 다르게 인식합니다. 대소문자를 무시하는 옵션인 -i, --ignore-case 를 사용하면 'abc' 와 'ABC', 'aBc' 를 모두 같게 처리합니다.

$ sort input.txt | uniq -i abc apple BALL bat

 

같이 보기