linux 명령어 comm
파일 비교 출력하는 명령어.
$ comm
Linux 명령어 comm
두 개의 정렬된 파일을 비교하여 공통된 부분을 출력하는 명령어
1. 자세한 설명
comm
명령어는 Linux에서 두 개의 정렬된 파일을 비교하고 공통된 부분이나 각 파일에만 있는 데이터를 출력하는 데 사용됩니다. 세 개의 열로 구성된 결과를 제공하며, 파일 간의 차이점과 공통점을 명확히 확인할 수 있습니다.
2. 사용법
- 파일 비교 기본 사용법
comm [파일1] [파일2]
두 파일을 비교하고 공통된 내용 및 차이점을 출력합니다. - 열 제거 옵션 사용
comm -1 [파일1] [파일2]
첫 번째 파일에만 있는 내용을 제외하고 출력합니다. - 공통 부분만 출력
comm -12 [파일1] [파일2]
두 파일 모두에 있는 공통 부분만 출력합니다.
3. 자세하게 설명
comm
명령어는 다음과 같은 열을 생성합니다:
- 첫 번째 열: 첫 번째 파일에만 있는 내용
- 두 번째 열: 두 번째 파일에만 있는 내용
- 세 번째 열: 두 파일에 공통으로 있는 내용
명령어 옵션:
- -1: 첫 번째 파일의 데이터를 출력에서 제거합니다.
- -2: 두 번째 파일의 데이터를 출력에서 제거합니다.
- -3: 공통 데이터를 출력에서 제거합니다.
비교를 위해 두 파일은 반드시 정렬되어 있어야 합니다.
4. 자세한 명령어 사용법
다음은 comm
명령어의 다양한 사용 예제입니다:
# 두 파일 비교 $ comm file1.txt file2.txt # 첫 번째 파일 데이터 제외 $ comm -1 file1.txt file2.txt # 두 번째 파일 데이터 제외 $ comm -2 file1.txt file2.txt # 공통 데이터 제외 $ comm -3 file1.txt file2.txt # 공통 데이터만 출력 $ comm -12 file1.txt file2.txt # 정렬되지 않은 파일 비교 $ sort file1.txt > sorted1.txt $ sort file2.txt > sorted2.txt $ comm sorted1.txt sorted2.txt # 특정 열만 출력 $ comm -1 -2 file1.txt file2.txt # 스크립트를 통해 두 파일 자동 비교 #!/bin/bash comm -12 <(sort file1.txt) <(sort file2.txt) > common_data.txt # 세 파일 비교 $ comm -12 file1.txt file2.txt | comm -12 - file3.txt # 결과를 다른 파일로 저장 $ comm file1.txt file2.txt > result.txt # 특정 패턴을 제외한 비교 $ grep -v "pattern" file1.txt | comm - file2.txt # 공통 부분을 출력하고 크기 확인 $ comm -12 file1.txt file2.txt | wc -l # 로그 파일의 공통된 라인 비교 $ comm -12 <(sort log1.txt) <(sort log2.txt) # 두 디렉터리의 파일 이름 비교 $ ls dir1 | sort > list1.txt $ ls dir2 | sort > list2.txt $ comm -12 list1.txt list2.txt # 특정 파일 제외 후 비교 $ grep -v "exclude" file1.txt | comm -12 - file2.txt # 결과를 JSON으로 변환 $ comm -12 file1.txt file2.txt | jq -R 'split("\n") | map(select(. != ""))' # 스크립트로 파일별 공통 부분 추출 #!/bin/bash for file in dir1/*.txt; do comm -12 <(sort $file) <(sort reference.txt) done # 정렬된 파일 비교 자동화 #!/bin/bash sort file1.txt > sorted1.txt sort file2.txt > sorted2.txt comm -12 sorted1.txt sorted2.txt
위의 예제는 comm
명령어를 사용하여 파일 간의 공통점과 차이점을 분석하는 다양한 방법을 보여줍니다.
No responses yet