중복된 내용을 제거하는 linux uniq 명령어 사용법
uniq 는 입력 내용에서 중복된 항목을 제거하는 커맨드 라인 유틸리티입니다.
보통 sort 명령어로 정렬을 한 결과를 파이프로 uniq 에 전달해서 중복 내용을 제거합니다.
기본 사용법
예제 파일을 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