uniq — 리눅스 기본 명령어
Linux / 리눅스 기본 명령어 / uniq.html
정렬된 파일에서 연속된 중복 줄을 제거하거나 세는 명령어.
기본 정보
| 명령어 이름 | uniq (unique) |
|---|---|
| 한 줄 소개 | 정렬된 파일에서 연속된 중복 줄을 제거하거나 세는 명령어. |
| 제공 | GNU coreutils (모든 Linux 배포판 기본 탑재) |
| 공식 문서 | https://man7.org/linux/man-pages/man1/uniq.1.html |
| 지원 운영체제 | Linux, macOS, BSD, WSL |
| 설치 여부 | 기본 탑재 (별도 설치 불필요) |
| 분류 | 리눅스 기본 명령어 (태그: 중복 제거, 텍스트, 리눅스, 기본) |
이 명령어는 무엇인가?
uniq은 unique의 약자로, 정렬된 파일이나 입력에서 연속된 중복 줄을 제거하거나, 중복 횟수를 세는 명령어입니다. sort와 함께 사용하면 파일 전체에서 중복을 제거할 수 있습니다.
연속된 중복만 제거하므로, 정렬하지 않고 사용하면 중복이 완전히 제거되지 않을 수 있습니다.
어떤 문제를 해결하는가?
- 목록에서 중복 항목을 제거합니다.
- 각 항목의 발생 횟수를 셉니다.
- 로그에서 중복된 줄을 정리합니다.
- 데이터 분석에서 고유값을 추출합니다.
주요 기능
중복 제거
연속된 중복 줄을 제거합니다.
- 활용 상황: 정렬된 목록에서 중복을 없앨 때.
- 얻는 결과: 고유한 줄만 남습니다.
- 제한 사항: 정렬하지 않으면 연속되지 않은 중복이 남습니다.
중복 횟수 세기 (-c)
각 줄의 중복 횟수를 표시합니다.
- 활용 상황: 어떤 항목이 가장 자주 나타나는지 확인할 때.
- 얻는 결과: 각 줄 앞에 횟수가 표시됩니다.
- 제한 사항: 정렬 후 사용해야 정확합니다.
고유 항목만 출력 (-u)
한 번만 나타난 줄만 출력합니다.
- 활용 상황: 한 번뿐인 항목을 찾을 때.
- 얻는 결과: 단독 항목만 표시됩니다.
- 제한 사항: 정렬 후 사용해야 정확합니다.
특정 필드 기준 (-f, -s)
특정 위치의 문자를 무시하고 비교합니다.
- 활용 상황: 비슷하지만 일부 다른 줄을 묶을 때.
- 얻는 결과: 조건에 맞는 중복이 제거됩니다.
- 제한 사항: 옵션 조합이 복잡할 수 있습니다.
설치 및 실행
기본 탑재 확인
모든 Linux 배포판에 기본 포함되어 있습니다.
which uniq
uniq --version
sort와 함께 사용
전체 중복 제거를 위해 sort와 파이프로 연결합니다.
# 정렬 후 중복 제거
cat file.txt | sort | uniq
# 중복 횟수 세기
cat file.txt | sort | uniq -c | sort -rn
실제 사용 예제
기본 중복 제거
연속된 중복을 제거합니다.
# 정렬된 파일에서 중복 제거
touch colors.txt
echo -e "red\nblue\nblue\ngreen\ngreen\ngreen" > colors.txt
sort colors.txt | uniq
# 결과:
# blue
# green
# red
# 원본과 비교
cat colors.txt
중복 횟수 세기
각 항목이 몇 번 나타나는지 셉니다.
# 중복 횟수 표시
cat colors.txt | sort | uniq -c
# 결과:
# 1 blue
# 3 green
# 2 red
# 빈도순 정렬
cat colors.txt | sort | uniq -c | sort -rn
# 3 green
# 2 red
# 1 blue
단독 항목 찾기
한 번만 나타난 항목을 찾습니다.
# 한 번뿐인 줄만
cat colors.txt | sort | uniq -u
# 결과: blue (한 번뿐)
# 중복된 줄만
cat colors.txt | sort | uniq -d
# 결과:
# green
# red
# 로그 분석 예시
cat access.log | awk '{print $1}' | sort | uniq -c | sort -rn | head -10