comm 명령어 실용 예제
comm 명령어의 기본 사용법을 이해했으므로, 실제 시나리오에서 유용성을 보여주는 몇 가지 실제 예시를 살펴보겠습니다.
예시 1: 새로운 항목 찾기
지난 주와 오늘 두 개의 사용자 목록이 있다고 가정해 보겠습니다. 어떤 사용자가 새로운 사용자인지 (지난 주 이후 추가됨) 식별하려고 합니다.
이 파일들을 만들어 보겠습니다.
cd ~/project/comm-lab
echo -e "user1\nuser2\nuser3\nuser4\nuser5" | sort > users_last_week.txt
echo -e "user1\nuser3\nuser5\nuser6\nuser7\nuser8" | sort > users_today.txt
새로운 사용자 ( users_today.txt에 있지만 users_last_week.txt에는 없는 사용자) 를 찾으려면:
comm -13 users_last_week.txt users_today.txt
출력:
user6
user7
user8
예시 2: 제거된 항목 찾기
동일한 파일을 사용하여, 지난 주 이후 제거된 사용자를 찾아보겠습니다.
comm -23 users_last_week.txt users_today.txt
출력:
user2
user4
예시 3: comm 과 다른 명령어 결합
comm 명령어는 더 복잡한 작업을 위해 다른 명령어와 결합될 수 있습니다. 예를 들어, 원래 파일에 공통으로 있는 명령어가 몇 개인지 세고 싶다면:
comm -12 commands1.txt commands2.txt | wc -l
이것은 공통 줄을 wc -l 명령어에 파이프하여 줄 수를 계산합니다.
출력:
5
이는 두 파일 모두에 공통으로 있는 명령어가 5 개임을 나타냅니다.
예시 4: 정렬되지 않은 파일과 함께 comm 사용하기
comm 명령어는 정렬된 입력 파일을 필요로 합니다. 정렬되지 않은 파일과 함께 사용하려고 하면 잘못된 결과를 얻을 수 있습니다. 이를 시연해 보겠습니다.
echo -e "cat\nls\npwd\ncd" > unsorted1.txt
echo -e "ls\ncat\ngrep\npwd" > unsorted2.txt
comm을 직접 사용하려고 하면:
comm unsorted1.txt unsorted2.txt
파일이 정렬되지 않았기 때문에 출력 결과가 오해를 불러일으킬 수 있습니다. 올바른 접근 방식은 먼저 파일을 정렬하는 것입니다.
comm <(sort unsorted1.txt) <(sort unsorted2.txt)
이것은 프로세스 치환 (process substitution) 을 사용하여 파일을 비교하기 전에 즉석에서 정렬합니다. 올바른 열로 제대로 형식화된 결과를 볼 수 있습니다.
이러한 예시는 변경 사항 추적, 차이점 찾기, 데이터 필터링 등 다양한 시나리오에서 텍스트 파일을 비교하는 comm 명령어의 다재다능함을 보여줍니다.