리눅스 명령어 comm 사용법 및 3가지 옵션

리눅스 명령어 comm는 두 개의 정렬된 파일을 비교하여 서로의 차이점과 공통점을 쉽게 확인할 수 있도록 도와주는 유용한 도구입니다. 이 글에서는 comm 명령어의 기본 사용법부터 다양한 옵션 활용법까지 상세히 설명드리겠습니다. 리눅스 파일 비교 작업에서 comm 명령어를 어떻게 효과적으로 활용할 수 있는지 함께 알아보시죠.

리눅스 명령어 comm이란?

comm 명령어는 두 개의 정렬된 파일을 입력받아 각 파일의 고유한 항목과 공통된 항목을 출력해주는 리눅스 기본 명령어입니다. 여기서 “정렬된 파일”이란 알파벳 순서나 숫자 순서 등으로 정렬된 상태를 의미합니다. 두 파일 간의 공통점과 차이점을 분석하고자 할 때 매우 유용하게 사용할 수 있습니다.

왜 정렬된 파일이어야 할까?

comm 명령어는 두 파일의 차이점을 비교할 때, 각 파일의 내용을 한 줄씩 차례대로 대조합니다. 이 과정에서 파일이 정렬되어 있지 않으면 제대로 된 비교 결과를 얻을 수 없습니다. 따라서, comm 명령어를 사용하기 전, 파일을 미리 정렬(sort)하는 것이 중요합니다. 정렬되지 않은 파일에서 comm 명령어를 사용하면 의도하지 않은 결과가 나올 수 있습니다.

comm 명령어의 기본 사용법

comm 명령어의 기본적인 사용법은 다음과 같습니다.

comm [옵션] 파일1 파일2
ShellScript

이 명령어는 기본적으로 두 개의 파일을 비교하여 결과를 세 개의 열(column)로 출력합니다.

  1. 첫 번째 열은 첫 번째 파일에만 있는 항목을 보여줍니다.
  2. 두 번째 열은 두 번째 파일에만 있는 항목을 보여줍니다.
  3. 세 번째 열은 두 파일에 공통으로 있는 항목을 보여줍니다.

예제

다음과 같은 두 개의 파일이 있다고 가정해보겠습니다.

file1.txt:

apple
banana
cherry
Plaintext

file2.txt:

banana
cherry
date
Plaintext

이제 comm 명령어를 사용하여 두 파일을 비교해 보겠습니다.

comm file1.txt file2.txt
ShellScript

이 명령어를 실행하면 다음과 같은 결과가 출력됩니다.

그림 1. 리눅스 명령어 comm: 정렬된 파일 비교하기
  • 첫 번째 열에는 file1.txt에만 있는 apple이 표시됩니다.
  • 두 번째 열에는 file2.txt에만 있는 date가 표시됩니다.
  • 세 번째 열에는 두 파일에 공통으로 있는 bananacherry가 표시됩니다.

comm 명령어의 주요 옵션

comm 명령어는 다양한 옵션을 제공하여 사용자가 원하는 대로 결과를 필터링할 수 있게 합니다. 여기서는 가장 많이 사용되는 옵션들을 소개하겠습니다.

-1 옵션: 첫 번째 파일에만 있는 항목 숨기기

이 옵션을 사용하면 첫 번째 파일에만 있는 항목을 출력하지 않습니다. 예를 들어, 두 파일의 공통된 항목과 두 번째 파일에만 있는 항목만 보고 싶을 때 유용합니다.

comm -1 file1.txt file2.txt
ShellScript

이 명령어를 실행하면 다음과 같은 결과가 출력됩니다.

그림 2. 리눅스 명령어 comm: 첫 번째 파일에만 있는 항목 숨기기

-2 옵션: 두 번째 파일에만 있는 항목 숨기기

이 옵션은 두 번째 파일에만 있는 항목을 출력하지 않습니다. 첫 번째 파일에만 있는 항목과 공통된 항목을 보고자 할 때 사용합니다.

comm -2 file1.txt file2.txt
ShellScript

이 명령어를 실행하면 다음과 같은 결과가 출력됩니다.

그림 3. 리눅스 명령어 comm: 두 번째 파일에만 있는 항목 숨기기

-3 옵션: 두 파일의 공통 항목 숨기기

이 옵션을 사용하면 두 파일에 공통으로 있는 항목이 출력되지 않습니다. 두 파일 간의 차이점만 보고 싶을 때 유용합니다.

comm -3 file1.txt file2.txt
ShellScript

이 명령어를 실행하면 다음과 같은 결과가 출력됩니다.

그림 4. 리눅스 명령어 comm: 공통 항목 숨기기

옵션 조합하기

위에서 설명한 옵션들은 단독으로 사용될 수도 있지만, 조합하여 사용할 수도 있습니다. 예를 들어, 두 파일의 공통점만 보고 싶다면 -1-2 옵션을 함께 사용할 수 있습니다.

comm -12 file1.txt file2.txt
ShellScript

이 명령어는 다음과 같은 결과를 출력합니다.

그림 5. 리눅스 명령어 comm: 공통 항목만 보이기

유용한 활용 방법

comm 명령어는 단순히 두 파일의 차이점과 공통점을 찾는 데 그치지 않고, 다양한 활용이 가능합니다.

파일 정렬과 함께 사용하기

앞서 설명한 것처럼 comm 명령어는 정렬된 파일에 대해서만 올바른 결과를 제공합니다. 만약 정렬되지 않은 파일을 비교해야 할 경우, sort 명령어와 함께 사용하여 파일을 정렬한 후 비교할 수 있습니다.

sort file1.txt -o sorted_file1.txt
sort file2.txt -o sorted_file2.txt
comm sorted_file1.txt sorted_file2.txt
ShellScript

이렇게 하면 정렬된 파일을 비교하여 정확한 결과를 얻을 수 있습니다.

파일 차이점만 빠르게 찾기

두 파일 간의 차이점만 빠르게 찾아내고 싶을 때 -3 옵션을 사용하여 공통 항목을 숨긴 후, 차이점만 확인할 수 있습니다. 이는 파일 동기화 작업에서 유용할 수 있습니다.

스크립트에서 활용하기

comm 명령어는 쉘 스크립트에서 사용할 때 매우 유용합니다. 예를 들어, 두 목록을 비교하여 어떤 항목이 추가되었는지, 어떤 항목이 제거되었는지를 스크립트로 자동화할 수 있습니다.

new_items=$(comm -13 old_list.txt new_list.txt)
removed_items=$(comm -23 old_list.txt new_list.txt)
ShellScript

위 코드에서 new_items는 새로 추가된 항목, removed_items는 제거된 항목을 담고 있습니다.

주의사항

comm 명령어를 사용할 때는 반드시 두 파일이 정렬되어 있어야 합니다. 파일이 정렬되지 않은 상태에서 comm을 사용하면 의도한 결과를 얻지 못할 수 있습니다. 또한, 두 파일의 형식이나 인코딩이 다를 경우 비교 결과가 다르게 나올 수 있으니 주의해야 합니다.

정리

리눅스 명령어 comm은 두 개의 정렬된 파일을 비교하여 차이점과 공통점을 쉽게 확인할 수 있는 강력한 도구입니다. 다양한 옵션을 활용하여 원하는 대로 결과를 필터링할 수 있으며, 파일 비교 작업을 효율적으로 수행할 수 있습니다. comm 명령어를 사용할 때는 파일을 미리 정렬하고, 각 옵션의 용도를 잘 이해하여 상황에 맞게 적용하는 것이 중요합니다. 이 글을 통해 comm 명령어의 개념과 활용 방법을 이해하고, 실제 작업에서 효과적으로 활용할 수 있기를 바랍니다.

참고자료

관련 포스트

Leave a Comment