본문 바로가기

리눅스

uniq 명령어

반응형

uniq 명령어

uniq 명령어는 파일이나 입력에서 연속으로 중복된 줄을 제거하거나 중복 여부를 확인하는 데 사용됩니다. 이 명령어는 주로 sort 명령어와 함께 사용됩니다. 이유는 uniq는 연속된 중복 줄만 처리하기 때문입니다. 따라서 데이터를 정렬한 후 사용하는 것이 일반적입니다.

기본 문법

uniq [OPTION]... [INPUT [OUTPUT]]
  • 입력 파일 : uniq가 처리할 파일입니다. 생략하면 표준 입력(STDIN)을 사용합니다.
  • 출력 파일 : 처리 결과를 저장할 파일입니다. 생략하면 표준 출력(STDOUT)을 사용합니다.

uniq 주요 옵션

  • -c : 중복된 줄의 개수를 출력합니다.
  • -d : 중복된 줄만 출력합니다.
  • -u : 고유한(중복되지 않은) 줄만 출력합니다.
  • -i : 대소문자를 구분하지 않습니다.
  • -f : 각 줄의 처음 N개의 필드를 무시하고 비교합니다.
  • -s : 각 줄의 처음 N개의 문자를 무시하고 비교합니다.
  • -z : 줄 끝을 널(\0) 문자로 처리합니다. (GNU 확장 옵션)

사용 예시

예제 데이터 생성

cat <<EOF | sudo tee -a file.txt
apple
banana
cherry
apple
apple
banana
cherry
cherry
EOF

1. 중복된 줄 제거

입력 파일에서 연속된 중복 줄을 제거하고 결과를 출력합니다.

cat file.txt | uniq
apple
banana
cherry
apple
banana
cherry

2. 중복 횟수 표시

중복된 줄 앞에 중복 횟수를 출력합니다.

cat file.txt | uniq -c
      1 apple
      1 banana
      1 cherry
      2 apple
      1 banana
      2 cherry

3. 중복된 줄만 출력

연속으로 나타난 중복된 줄만 출력합니다.

cat file.txt | uniq -d
apple
cherry

4. 고유한 줄만 출력

중복되지 않은 고유한 줄만 출력합니다.

cat file.txt | uniq -u
apple
banana
cherry
banana

5. 정렬 후 중복 제거

데이터를 정렬한 후 중복 줄을 제거합니다. 정렬되지 않은 파일에서는 연속된 중복만 제거되므로 정렬 과정이 필요합니다.

sort file.txt | uniq
apple
banana
cherry

6. 대소문자 구분 없이 비교

대소문자 구분 없이 중복된 줄을 처리합니다.

cat file.txt | uniq -i
apple
banana
cherry
apple
banana
cherry

7. 특정 문자를 무시하고 비교

각 줄의 처음 2문자를 무시하고 나머지 부분으로 중복 여부를 비교합니다.

cat file.txt | uniq -s 2
apple
banana
cherry
apple
banana
cherry

8. 중복된 줄과 고유한 줄 확인

중복 횟수를 내림차순으로 정렬하여 가장 많이 중복된 줄을 확인합니다.

sort file.txt | uniq -c | sort -nr
      3 cherry
      3 apple
      2 banana

정렬 후 중복 제거

sort file.txt | uniq -c
      3 apple
      2 banana
      3 cherry

 

uniq는 중복된 데이터를 정리하거나 패턴 분석에 유용합니다. 다른 명령어(sort, grep, awk)와 함께 사용하면 더 강력하게 활용할 수 있습니다.

 

참고URL

- Ubuntu Manpage : noble uniq

 

728x90
반응형