강좌
클라우드/리눅스에 관한 강좌입니다.
리눅스 분류

행단위 비교를 수행하는 comm 활용법

작성자 정보

  • 관리자 작성
  • 작성일

컨텐츠 정보

본문

행단위 비교를 수행하는 comm 활용법

 

 

 

 

두개의 파일에 대하여 각각의 행단위 비교를 수행하는 방법에 대해서 알아보도록하겠다.

 

 

 

 comm은 지정한 두파일의 행과 행을 비교할 때에 사용하는 명령어이다.

 

 

 

 comm명령어는 두 파일의 행과 행을 비교하는 행단위 비교명령어이다.

 

 

 

 

 

comm명령어의 출력결과는 3개의 출력항목을 가진다.

 

 

 

 특별한 옵션을 사용하지 않았을 경우, 출력내용의 첫번째 항목은 첫번째 파일에만 존재하는 내용이고, 두번째 항목은 두번째 파일에만 존재하는 내용, 그리고 세번째 항목은 두파일에 공통적으로 존재하는 내용의 순서대로 출력된다.

 

 

 

 그리고 -1, -2, -3등과 같은 옵션을 사용하면 좀 더 자세한 출력결과를 얻을 수 있다.

 

 

 

 -1옵션을 사용하면 파일1”에만 존재하는 라인은 출력하지 않는다.

 

 

 

 그리고 -2옵션을 사용하면 파일2”에만 존재하는 라인은 출력하지 않는다.

 

 

 

 -3옵션은 파일1”파일2” 모두에 존재하는 라인은 출력하지 않는다.

 

 

 

 

 

다음 예에서 확인할 수 있다.

 

 

 

 

 

그럼 먼저, comm명령어의 설명을 위하여 다음과 같은 두개의 파일을 만들었다.

 

 

 

  file1 file2의 같은점과 다른점이 모두 존재하도록 생성하였다.

 

 

 

 

 

[root@sulinux ~]# cat file1

WWW.LINUX.CO.KR

SULINUX.

linux users.

[root@sulinux ~]#

[root@sulinux ~]# cat file2

www.linux.co.kr

sulinux.

linux users.

[root@sulinux ~]#

 

위의 파일을 확인한 것과 같이 이번 예를 위하여 다음과 같이 정리하였다.

 

 

 

 

 

- file1에만 있는 내용         : “WWW.LINUX.CO.KR”  “SULINUX.”

 

- file2에만 있는 내용         : “www.linux.co.kr”  “sulinux.”

 

- file1 file2 모두에 있는 내용    : “linux users.”

 

아래는 file1 file2의 내용이 위와 같을 때 comm명령어로 file1 file2를 비교한 결과이다.

 

 

 

 

 

[root@sulinux ~]# comm file1 file2

WWW.LINUX.CO.KR

SULINUX.

linux users.

        www.linux.co.kr

        sulinux.

        linux users.

[root@sulinux ~]#

 

 

 

위의 결과에서 첫번째 결과에서 file1에만 존재하는 내용(WWW.LINUX.CO.KR SULINUX), 그리고 file1 file2에 모두 존재하는 내용(linux users.)이 차례대로 출력되었다.

 

 

 

 

 

그리고 두번째 결과에서는 file2에만 존재하는 내용(www.linux.co.kr sulinux) 그리고 file1 file2에 모두 존재하는 내용(linux users)이 각각 출력되었다.

 

 

 

 이 결과에서 우리는 지정한 두개 파일의 각 행들에 대한 비교를 할 수 있다는 것을 알 수 있다.

 

 

 

 

 

다음은 첫번째 파일과 다른 부분의 두번째 파일내용과 공통된 내용만을 출력하는 방법이다.

 

 

 

 comm명령어의 일반적인 출력결과에서 첫번째 파일에서만 유일한 부분은 결과에서 제외시킬 수 있다.

 

 

 

 

 

두개의 파일을 비교하여 첫번째 파일과 다른 두번째 파일의 내용만을 출력하고자 한다면 -1옵션을 사용한다.

 

 

 

 아래의 예는 file1 file2를 비교하여 file1과 다른 file2의 내용을 출력한 것이다.

 

 

 

 

 

[root@sulinux ~]# comm -1 file1 file2

www.linux.co.kr

sulinux.

linux users.

[root@sulinux ~]#

 

 

 

file2의 내용에서 file1과 다른 부분은 www.linux.co.kr”“sulinux.”이므로 출력된 것이고 “linux users.”는 공통된 부분이므로 마지막에 출력된 것이다.

 

 

 

 comm에서 -1옵션을 사용하면 file1과 다른 file2의 내용만을 출력한다.

 

 

 

 물론, 이 경우에도 공통적으로 포함된 내용은 마지막에 출력된다.

 

 

 

 

 

 

그리고 다음은 두번째 파일과 다른 부분의 첫번째 파일내용과 공통내용을 출력한 예이다.

 

 

 

 comm명령어의 일반적인 출력결과에서 두번째 파일에서만 유일한 부분은 결과에서 제외시킬 수 있다.

 

 

 

 

 

앞의 예와는 반대로 두개의 파일을 비교하여 두번째 파일과 다른 첫번째 파일의 내용을 출력하고자 한다면 -2옵션을 사용한다.

 

 

 

 아래의 예는 file1 file2를 비교하여 file2와 다른 file1의 내용을 출력한 것이다.

 

 

 

 

 

[root@sulinux ~]# comm -2 file1 file2

WWW.LINUX.CO.KR

SULINUX.

linux users.

[root@sulinux ~]#

 

 

 

file1의 내용에서 file2과 다른 부분은 WWW.LINUX.CO.KR”“SULINUX.”이므로 출력된 것이고 “linux users.”는 공통된 부분이므로 마지막에 출력된 것이다.

 

 

 

 

 

 

이번에는 두파일 모두 존재하는 부분을 생략하고 두파일의 행비교를 수행한 예이다.

 

 

 

 comm명령어의 일반적인 출력결과에서 두 파일 모두에 존재하는 내용을 결과에서 제외시킬 수 있다.

 

 

 

  

 

만약 두개의 파일 모두에 존재하는 내용이 있다는 이 부분은 출력결과에서 제외시키려면 -3옵션을 사용한다.

 

 

 

 아래의 예는 file1 file2의 내용을 비교하여 두 파일 모두에 존재하는 내용은 출력결과에서 제외시키도록 하였다.

 

 

 

 

 

[root@sulinux ~]# comm -3 file1 file2

WWW.LINUX.CO.KR

SULINUX.

        www.linux.co.kr

        sulinux.

 [root@sulinux ~]#

 

 

 

 

그 결과 file1 file2에 모두 존재하는 공통된 내용인 “linux users.”가 출력되지 않았음을 확인 할 수 있다.

 

 

 

 

 

하지만 두 파일의 비교결과,  file1에만 존재하는 내용 WWW.LINUX.CO.KR SULINUX.이 출력되었고, 그 다음 file2에만 존재하는 내용 www.linux.co.kr sulinux.이 출력되었음을 알 수 있다.

 

 

 

 

 

관련자료

댓글 0
등록된 댓글이 없습니다.

공지사항


뉴스광장


  • 현재 회원수 :  60,074 명
  • 현재 강좌수 :  35,995 개
  • 현재 접속자 :  517 명