uniq 고급 옵션 및 실용적인 활용
uniq의 기본 사용법과 sort와 결합하는 방법을 이해했으므로 데이터 처리 작업에 더욱 강력하게 사용할 수 있는 uniq 명령어의 몇 가지 추가 옵션을 살펴보겠습니다.
-c 를 사용하여 발생 횟수 계산
-c 옵션은 각 줄의 발생 횟수를 계산합니다. 파일에 각 고유한 줄이 몇 번 나타나는지 알고 싶을 때 유용합니다.
sort ~/project/duel_log.txt | uniq -c
다음과 같은 출력을 볼 수 있습니다.
2 potion
2 shield
2 sword
이는 각 항목이 원래 파일에 두 번 나타난다는 것을 보여줍니다.
-d 를 사용하여 중복된 줄만 찾기
중복된 줄 (두 번 이상 나타나는 줄) 만 찾고 싶다면 -d 옵션을 사용할 수 있습니다.
sort ~/project/duel_log.txt | uniq -d
출력:
potion
shield
sword
파일의 모든 항목에 중복 항목이 있으므로 출력에 모두 나열됩니다.
고유 항목만 포함하는 파일 만들기
uniq 명령어를 더 잘 시연하기 위해 내용이 더 다양한 새 파일을 만들어 보겠습니다.
echo -e "apple\napple\napple\nbanana\ncherry\ncherry\ngrape" > ~/project/fruits.txt
이 파일을 살펴보겠습니다.
cat ~/project/fruits.txt
출력:
apple
apple
apple
banana
cherry
cherry
grape
이제 -u 옵션을 사용하여 정확히 한 번 나타나는 항목을 찾아보겠습니다.
sort ~/project/fruits.txt | uniq -u
출력:
banana
grape
이는 "banana"와 "grape"가 파일에 한 번만 나타난다는 것을 보여줍니다.
실제 응용 프로그램: 로그 분석
실제 응용 프로그램을 시뮬레이션하기 위해 간단한 로그 파일을 만들어 보겠습니다.
echo -e "INFO: System started\nERROR: Connection failed\nINFO: User logged in\nWARNING: Low memory\nERROR: Connection failed\nINFO: System started" > ~/project/system.log
이제 이 로그 파일을 분석하여 어떤 유형의 메시지가 나타나고 몇 번 나타나는지 알아보겠습니다.
cat ~/project/system.log | sort | uniq -c
출력은 다음과 유사해야 합니다.
2 ERROR: Connection failed
2 INFO: System started
1 INFO: User logged in
1 WARNING: Low memory
이를 통해 로그 파일의 이벤트 유형과 빈도에 대한 간략한 개요를 얻을 수 있습니다.
cut 명령어를 사용하여 메시지 유형 (INFO, ERROR, WARNING) 만 추출할 수도 있습니다.
cat ~/project/system.log | cut -d: -f1 | sort | uniq -c
출력:
2 ERROR
3 INFO
1 WARNING
이 분석은 6 개의 로그 항목 중 3 개가 INFO 메시지, 2 개가 ERROR 메시지, 1 개가 WARNING 메시지임을 보여줍니다.
이러한 예는 sort, uniq, cut과 같은 간단한 명령어를 결합하여 Linux 에서 강력한 데이터 처리 파이프라인을 만드는 방법을 보여줍니다.