리눅스마스터2급강좌 : 파일비교하기 cmp
작성자 정보
- 관리자 작성
- 작성일
컨텐츠 정보
- 3,988 조회
- 0 추천
- 목록
본문
리눅스마스터2급강좌 : 파일비교하기 cmp
파일 비교
①cmp
cmp는 “compare”의 약어로서 두 개의 파일이 어떤 부분이 다른가를 비교할 때에 사용하는 명령어이다.
두 개의 파일을 비교하여 단순히 같은가 다른가를 확인할 수도 있으며 또한 몇 행의 몇 번째 문자가 다른가를 확인할 수도 있다.
두 파일이 동일한가를 확인하고자 할 때에 주로 사용한다.
cmp는 두 파일이 완전히 같다면, 결과가 출력되지 않고, 다른 부분들이 있다면, 처음으로 다른 부분이 발견된 행과 바이트를 출력한다.
다음 예제는 두 개의 파일을 단순 비교한 것이다.
|
|
|
| # cat file1 This is a book. # cat file2 THis is a book. # cmp file1 file2 file1 file2 differ : byte 2, line 1 # |
|
|
|
|
결과문에서 첫 번째 행(line 1)의 두 번째 바이트(byte 2)의 문자가 서로 다르다는 것을 표시하였다.
②comm
comm은 지정한 두 파일의 행과 행을 비교할 때에 사용하는 명령어이다.
특별한 옵션을 사용하지 않고 comm 명령어로 두 개의 파일을 비교하였을 때의 출력내용은 첫 번째 파일에만 존재하는 내용과 두 번째 파일에만 존재하는 내용 및 두 파일에 공통적으로 존재하는 내용의 순서대로 출력된다.
그리고 –1. -2. -3 등과 같은 옵션을 사용하면 좀 더 자세한 출력 결과를 얻을 수 있다.
|
|
|
| # cat file1 APACHE INSTALLATION. users. APACHE. # cat file2 apache installation users. apache. # comm file1 file2 APACHE INSTALLATION. apache installation users. APACHE. apache. |
|
|
|
|
위의 파일들에서 file1에만 있는 내용은 “APACHE INSTALLATION.”과 “APACHE.”이고, file2에만 있는 내용은 “apache installation”과 “apache.”이며, file1과 file2 모두에 있는 냉용은 “users.”이다.
이 상황에서 comm 명령을 내리면, 세 개의 줄로 결과가 출력이 된다.
가장 왼쪽의 출력 내용은 file1에만 있는 것이고, 중앙에 있는 것은 file2에만 있는 것이며, 가장 오른쪽의 출력 내용은 양쪽 파일 모두에 있는 내용이다.
다음은 comm 명령에 사용되는 옵션의 내용이다.
옵 션 | 기 능 |
-1 | file1에만 있는 행들을 무시한다. |
-2 | file2에만 있는 행들을 무시한다. |
-3 | 양쪽 모두에 있는 행들을 무시한다. |
③diff
diff는 “differences”의 약어로서 두 파일 사이의 내용을 비교하는 명령어이다.
두 파일의 다른 점을 확인하는 명령어로는 cmp가 있지만 diff가 다양한 형태의 비교가 가능하고 보다 직관적이고 명확하게 찾아준다.
이런 점에서 파일 비교용 프로그램으로는 diff가 일반적으로 사용된다.
diff는 “diff [옵션] 파일1 파일2” 또는 “diff [옵션] 디렉토리1 디렉토리2”의 형식으로 사용하는데, diff는 명령어의 실행결과로서 종료코드를 반환하는 경우에 차이점이 없다면 0, 차이점이 있다면 1, 실행 시 오류가 발생하면 2의 값을 반환한다.
다음은 아무런 옵션 없이 두 파일의 단순 비교를 한 예제이다.
|
|
|
| # cat file1 This is a book. # cat file2 THis is a book. # diff file1 file2 1c1 < This is a book. --- > THis is a book. # |
|
|
|
|
그리고 diff에 다양한 옵션을 함께 사용할 수 있는데, 이는 다음과 같다.
옵 션 | 기 능 |
--brief | 개략적으로 다른 점을 알려준다. |
-c | 지정된 형식으로 두 파일의 차이점을 자세히 출력한다. |
-d | 조그만 변화도 찾도록 하여 더욱 상세한 결과를 출력한다. |
-r | 두 디렉토리를 서브디렉토리까지 재귀적으로 비교한다. |
-s | 두 파일이 같을 때 보고한다. |
-H | 용량이 큰 두 개의 파일을 비교할 때 빠른 비교를 위해 사용한다. |
다음은 --brief 옵션을 사용한 예이다.
|
|
|
| # diff --brief file1 file2 Files file1 and file2 differ # |
|
|
|
|
다음은 –c 옵션을 사용한 예이다.
|
|
|
| # diff –c file1 file2 *** file1 2013-11-22 08:55:24.000000000 +0900 --- file2 2013-11-22 08:55:24.000000000 +0900 *************** *** 1 *** ! This is a book. --- 1 --- ! THis is a book. # |
|
|
|
|
다음은 –d 옵션을 사용한 예이다.
(위 예제에 -d 옵션을 사용하면 옵션이 없는 경우와 동일한 결과가 출력된다.
아래의 예는 다른 예이다)
|
|
|
| # diff –d ex_file1 ex_file2 26a27 > Nov 2 10:34:04 file sendmail : sendmail shutdown succeeded 43a45 > Nov 2 10:34:08 file exiting on signal 15 # |
|
|
|
|
관련자료
-
이전
-
다음