uniq (고유) 명령어는 Linux 텍스트 처리에서 필수적인 도구입니다. 텍스트 파일 내의 중복 줄을 필터링하고 관리하는 데 도움이 되지만, 효과적으로 사용하려면 작동 방식을 이해하는 것이 중요합니다.
기본 중복 제거
uniq 명령어의 주요 기능은 인접한 중복 줄을 제거하는 것입니다. reading.txt라는 파일에 다음과 같은 내용이 있다고 상상해 보세요.
book
book
paper
paper
article
article
magazine
반복되는 줄을 제거하려면 uniq 명령을 실행할 수 있습니다.
$ uniq reading.txt
book
paper
article
magazine
보시다시피 uniq는 인접한 중복 줄이 제거된 파일 버전을 출력합니다.
고급 필터링 옵션
uniq 명령어는 더 자세한 분석을 위한 몇 가지 옵션도 제공합니다.
각 줄의 발생 횟수를 세려면 -c (count) 플래그를 사용합니다.
$ uniq -c reading.txt
2 book
2 paper
2 article
1 magazine
반복되지 않는 줄 (즉, 고유한 줄) 만 표시하려면 -u (unique) 플래그를 사용합니다.
$ uniq -u reading.txt
magazine
반대로, 반복되는 줄만 표시하려면 -d (duplicated) 플래그를 사용합니다.
$ uniq -d reading.txt
book
paper
article
정렬의 중요성
uniq linux 명령어에 대한 중요한 세부 사항은 중복된 줄이 서로 인접해 있는 경우에만 중복을 감지한다는 것입니다. 중복이 파일 전체에 흩어져 있으면 uniq는 이를 식별하지 못합니다.
중복이 인접하지 않은 reading.txt의 버전을 고려해 보세요.
book
paper
book
paper
article
magazine
article
이 파일에 uniq를 실행하면 놀라운 결과가 나옵니다.
$ uniq reading.txt
book
paper
book
paper
article
magazine
article
서로 바로 옆에 동일한 줄이 없었기 때문에 줄이 제거되지 않았습니다. 이 문제를 해결하려면 먼저 파일 내용을 정렬해야 합니다. sort의 출력을 uniq로 파이프하면 모든 동일한 줄이 인접하게 되어 uniq가 올바르게 작동하도록 보장합니다. 이 조합은 셸 스크립팅에서 강력하고 일반적인 패턴입니다.
$ sort reading.txt | uniq
article
book
magazine
paper
이 명령어는 먼저 줄을 알파벳순으로 정렬한 다음 uniq가 중복을 필터링하여 정리된 고유 항목 목록을 제공합니다.