Linux
기본명령어
diff
#
Find similar titles
- 최초 작성자
-
최근 업데이트
aycho@insilicogen.com
Structured data
- Category
- Programming
Table of Contents
리눅스 기본 명령어 - cmp, diff, diff3, comm #
리눅스에서 파일의 변경사항이나 내용을 비교하는 경우가 자주 발생하게 된다. 이때 눈으로 두 파일을 비교하는 것이 아니라 간단한 명령어로 내용을 비교할 수 있다. 두 파일을 비교하여 서른 다른 행을 찾아서 보여주는 명령어이다.
먼저 아래와 같이 세개의 파일에 각기 다른 내용이 있다고 가정한다면,
file1 | file2 | file3 |
---|---|---|
apples | apples | oranges |
oranges | oranges | walnuts |
walnuts | grapes | chestnuts |
이제 각 내용을 비교해보자.
cmp #
cmp는 compare의 약자로 말 그대로 비교해서 단순한 결과를 보여준다.
사용법 : cmp 옵션 file1 file2
먼저 cmp 명령어는 다음과 같이 사용한다. cmp file1 file2와 같이 비교할 두 개의 파일을 나열하면 된다.
$ cmp file1 file2
file1 file2 differ: char 16, line 3
그러면 위와 같이 두 파일의 다른 내용을 비교하여 결과를 보여준다. 즉 3번째 줄에서 문자열이 서로 다르다고 알려준다. diff 와 달리 두 파일의 내용을 비교해보고 처음으로 다른 부분이 나타나는 위치를 알려준다. 따라서 단순히 cmp는 내용이 서로 다른지 확인하는 용도이며 어떻게 다른지는 확인할 수가 없기 때문에 diff 명령어를 사용해야 된다. 단순히 두 파일이 같은지 다른지 비교해서 결과를 True/False 형태로 얻는다면 cmp가 훨씬 유용할 것이다.
$ cmp -l file1 file2
16 167 147
17 141 162
18 154 141
19 156 160
20 165 145
21 164 163
22 163 12
cmp: EOF on file2
diff #
diff는 differences의 약자로 두 파일 사이의 내용을 비교하는 명령어이다. cmp보다 diff 명령어가 보다 직관적이고 명확하게 결과를 알려준다. 실행결과 차이점이 없다면 0, 차이점이 있다면 1, 실행시 에러 상황이라면 2 이상의 값을 반환한다.
사용법 : diff 옵션 file1 file2 예를 들면 다음과 같다. diff file1 file2와 같이 사용하는데 각 비교파일명을 넣어주면 된다.
$ diff file1 file2
3c3
< walnuts
---
> grapes
위의 결과를 보면 두 라인이 서로 다른 내용을 보여주며 그 내용이 서로 상이하다고 알려준다.
$ diff -e file1 file2
3c
grapes
.
-e 옵션을 사용한다면 명령어 ed에서 인식할 수 있도록 만들어 주는데 두 파일의 내용을 어떻게 변환해야 할지를 알려준다. file1과 file2의 내용중에서 비교해보면 file2의 내용이 grapes로 변해 있다는 것을 알 수 있다.
diff3 #
사용법 : diff3 옵션 file1 file2 file3 cmp와 diff는 두 개의 파일의 내용을 비교할 수 있다. diff3 명령어를 사용하면 세 파일 사이의 차이점을 비교할 수 있다.
$ diff3 file1 file2 file3
====3
1:1c
2:1c
apples
3:0a
====
1:3c
walnuts
2:3c
grapes
3:2,3c
walnuts
chestnuts
comm #
comm 명령어를 사용한다면 두 파일에서 공통적인 부분과 한쪽에만 있는 부분을 찾아 낼 수 있다. 아래의 경우처럼 두 파일을 입력한 경우를 보여준다. 사용법 : comm 옵션 file1 file2
$ comm file1 file2
apples
oranges
grapes
walnuts
내용을 확인해보면 file1과 file2의 두 라인은 같고 세번째 라인에서 각각 grapes와 walnuts가 서로 다르게 위치한다는 내용을 바로 확인할 수 있다.
옵션에서 -1, -2, -3을 줄 수 있는데 다음과 같이 사용한다.
-1 : 두 파일을 비교하여 첫번째 파일과 다른 두번째 파일의 내용과 공통 부분
-2 : 두번째 파일과 다른 부분의 첫번째 파일내용과 공통 부분
-3 : 두 파일의 공통된 부분 제외한 나머지 즉 차이 부분