ioerror

uniq 사용법 및 옵션 - 중복 행 제거 및 집계 본문

OS

uniq 사용법 및 옵션 - 중복 행 제거 및 집계

반응형

 

uniq 사용법 및 옵션 - 중복 행 제거 및 집계

uniq - Report or Omit Repeated Lines

텍스트 파일이나 표준 입력에서 연속으로 중복되는 행을 제거하거나 중복 횟수를 집계하는 명령어이다. 입력 데이터가 정렬(sort)되어 있어야 동일한 행을 정확히 감지한다. 주로 로그 분석, 데이터 정제, 중복 라인 파악 등에 활용되며, 리눅스 및 Unix 계열 시스템 전반에서 기본 제공된다.

1. 명령어 용도

  • 특정 텍스트 파일 내 연속된 중복 데이터를 하나로 합치거나 중복 건수를 파악할 때 사용한다.
  • 로그 파일에서 특정 IP의 접속 빈도를 계산하거나, 소스 코드 내 중복 항목을 정리할 때 파이프라인(|)과 함께 자주 활용된다.

2. 명령어 서식

Bash
 
uniq [옵션] [입력파일 [출력파일]]

3. 명령어 옵션

옵션 설명 사용가능 OS 및 쉘
-c, --count 각 행의 중복 출현 횟수를 행 앞에 함께 출력하다.  
-d, --repeated 중복되어 나타나는 행만 출력하다.  
-D 중복되는 모든 행을 줄 단위로 출력하다. [GNU Linux]
--all-repeated[=METHOD] 중복되는 모든 행을 그룹 단위로 구분하여 출력하다. (none, prepend, separate) [GNU Linux]
-u, --unique 중복되지 않고 단 한 번만 나타나는 행만 출력하다.  
-i, --ignore-case 대소문자를 구분하지 않고 비교하다.  
-f N, --skip-fields=N 비교 시 처음 N개의 필드(공백으로 구분된 단어)를 무시하다.  
-s N, --skip-chars=N 비교 시 처음 N개의 문자를 무시하다.  
-w N, --check-chars=N 비교 시 각 행의 최대 N개 문자만 비교하다.  
-z, --zero-terminated 행 구분 기호로 줄바꿈 대신 NUL 문자를 사용하다. [GNU Linux]
--version 버전 정보를 출력하고 종료하다. [GNU Linux]
--help 도움말을 출력하고 종료하다. [GNU Linux]
  • 명령어 옵션 사용시 결과 예시
Bash
 
# 기본 사용법: 정렬된 파일에서 연속된 중복 행 제거
$ cat sample.txt
apple
apple
banana
apple

$ sort sample.txt | uniq
apple
banana

# -c 옵션: 중복 횟수 세기
$ sort sample.txt | uniq -c
      3 apple
      1 banana

# -d 옵션: 중복된 행만 출력
$ sort sample.txt | uniq -d
apple

# -u 옵션: 고유한(유일한) 행만 출력
$ sort sample.txt | uniq -u
banana

# -i 옵션: 대소문자 무시 비교
$ printf "Apple\napple\n" | uniq -i
Apple

uniq -c 결과 항목 설명:

  • 3 apple: apple이라는 행이 총 3번 연속하여 존재함을 나타내다.
  • 1 banana: banana라는 행이 총 1번 존재함을 나타내다.

uniq -u 결과 항목 설명:

  • banana: 전체 입력 중 중복되지 않고 오직 1회만 등장한 행을 나타내다.

4. 명령어 특이사항(유의사항)

  • uniq 명령어는 오직 연속된 중복 행만 처리하다. 파일 전체에 흩어져 있는 중복 항목을 제거하려면 반드시 sort 명령어로 정렬한 후 파이프라인으로 연결하여 처리해야 하다. (sort file.txt | uniq)
  • 필드 무시(-f) 옵션 사용 시, 필드는 스페이스나 탭 등의 공백 문자로 구분되다.
  • 대용량 바이너리 데이터나 NUL 문자로 구분된 텍스트 처리 시에는 -z 옵션을 활용하다.

관련 명령어들

  • sort: 텍스트 파일의 행을 정렬하다. uniq와 조합하여 가장 흔하게 사용되다.
  • grep: 패턴과 일치하는 행을 검색하다.
  • wc: 파일의 라인, 단어, 바이트 수를 측정하다.
  • cut: 행의 특정 필드나 영역을 잘라내다.

https://ioerror.tistory.com/entry/UNIX-Linux-Command-Reference

 

UNIX & Linux Command Reference

유닉스 / 리눅스 명령어 표유닉스와 리눅스 환경에서 자주 사용되는 필수 명령어들을 완벽하게 정리한다. 서버 관리, 프로그래밍, 일상적인 시스템 운영 등 어떤 목적이든 터미널 환경을 능숙하

ioerror.tistory.com

 

 

반응형
Comments