• Share
  • Email
  • Embed
  • Like
  • Save
  • Private Content
diff output formats
 

diff output formats

on

  • 771 views

 

Statistics

Views

Total Views
771
Views on SlideShare
503
Embed Views
268

Actions

Likes
0
Downloads
3
Comments
2

3 Embeds 268

http://ohgyun.com 265
http://www.hanrss.com 2
http://www.ohgyun.com 1

Accessibility

Categories

Upload Details

Uploaded via as Adobe PDF

Usage Rights

© All Rights Reserved

Report content

Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel

12 of 2 previous next

  • Full Name Full Name Comment goes here.
    Are you sure you want to
    Your message goes here
    Processing…
Post Comment
Edit your comment

    diff output formats diff output formats Presentation Transcript

    • diff Output Formats 안오균
    • diff$ diff foo bar• 두 파일을 라인 단위로 비교한다.• diff <원본 파일> <새 파일>
    • diff Output Formats• diff의 대표적인 출력 포맷은 다음과 같다. – Normal Format – Context Format – Unified Format
    • Normal Format$ diff foo bar• diff의 기본 출력 옵션으로,• 두 파일의 변경된 라인만 출력한다.• 변경된 부분을 명확하게 파악할 수 있지만, 변경된 라인 주변의 데이터 파악이 어렵다.
    • 예제 텍스트<원본 파일:foo> <새 파일:bar>1 Hello, 1 Hello,2 I am foo. 2 I am bar.3 a 3 a4 b 4 c5 c 5 d6 d 6 e7 e 7 f8 8 g 9
    • Normal Format: 출력 예제$ diff foo bar2c2< I am foo.---> I am bar.4d3< b7a7,8> f> g
    • Normal Format: 출력 형태• 변경 상태를 나타내는 키워드 이후에, 원본 파일과 새 파일의 라인을 번갈아 출력한다. 변경 키워드 < 원본 파일 라인 < 원본 파일 라인... --- > 새 파일 라인 > 새 파일 라인...
    • Normal Format: 변경 키워드• 변경 키워드는 변경의 상태를 나타내는 것으로, 추가/삭제/변경을 의미하는 a,d,c가 있다. a : 추가(added) d : 삭제(deleted) c : 변경(changed)
    • Normal Format: added추가됨(added)형태: (1)a[2]예제: 7a7,8의미: 원본 파일의 (1)라인 이후에, 새 파일의 범위 [2]만큼의 라인이 추가됨.
    • Normal Format: changed변경됨(changed)형태: [1]c[2]예제: 5,7c8,10의미: 원본 파일의 범위 [1]만큼의 라인이, 새 파일의 범위 [2]만큼의 라인으로 변경됨.
    • Normal Format: deleted삭제됨(deleted)형태: [1]d(2)예제: 5,7d3의미: 원본 파일의 범위 [1]만큼의 라인이 삭제됨. 새 파일의 (2)라인에 해당함.
    • Normal Format: 출력 예제(상세)$ diff foo bar2c2 # 원본 파일의 2라인이 새 파일의 2라인으로 변경됨< I am foo. # 원본 파일 라인(삭제됨)---> I am bar. # 새 파일 라인(추가됨)4d3 # 원본 파일의 4라인이 삭제됨< b7a7,8 # 원본의 7라인에 새 파일의 7,8라인이 추가됨> f> g
    • Context Format$ diff -c foo bar• `-c` 옵션을 사용하며, 변경된 라인 전/후의 라인을 함께 출력한다.• 변경된 라인의 주변을 확인할 수 있기 때문에, 정확하게 어떤 것이 변경되었는지 파악할 수 있다.• 주로 소스코드를 배포할 때 사용한다.• `-C 라인수`, `--context[=라인수]` 옵션으로, 출력할 주변 라인의 개수를 설정할 수 있다. (기본 3개)
    • 예제 텍스트<원본 파일:foo> <새 파일:bar>1 Hello, 1 Hello,2 I am foo. 2 I am bar.3 a 3 a4 b 4 c5 c 5 d6 d 6 e7 e 7 f8 8 g 9
    • Context Format: 출력 예제$ diff -c foo bar (좌측에서 계속)*** foo 2013-01-29 --- 1,8 ------- bar 2013-01-29 Hello,*************** ! I am bar,*** 1,7 **** a Hello, c! I am foo. d a e- b + f c + g d e
    • Context Format: 출력 예제$ diff -C 1 foo bar (좌측에서 계속)*** foo 2013-01-29 ! I am bar,--- bar 2013-01-29 a*************** c*** 1,5 **** *************** Hello, *** 7 ****! I am foo, --- 6,8 ---- a e- b + f c + g--- 1,4 ---- Hello,
    • Context Format: 출력 형태• 각 파일의 이름과 수정시각을 나타내는 헤더 이후에, 각 파일에서 변경된 라인 부분을 출력한다.• 옵션으로 넘긴 라인수만큼(기본 3개), 변경된 라인의 전/후 라인도 함께 출력한다. *** 원본파일 수정시각 --- 새파일 수정시각 *************** *** 원본 파일 범위 **** [변경 키워드] 원본 파일 라인 --- 새 파일 범위 ---- [변경 키워드] 새 파일 라인
    • Context Format: 변경 키워드• 각 파일에서 변경된 라인은, 변경 키워드와 공백 이후에 출력된다. 변경되지 않은 라인은 2개의 공백 이후 출력한다.• 변경 키워드는 다음과 같다. ! : 변경됨 + : 새 파일에 추가됨 - : 원본 파일에서 삭제됨
    • Context Format: 출력 예제(상세)$ diff -c foo bar*** foo 2013-01-29 # 원본 파일의 이름과 수정 시각--- bar 2013-01-29 # 새 파일의 이름과 수정 시각****************** 1,7 **** # 원본 파일의 1~7라인이 변경됨 Hello,! I am foo. # 변경된 라인 a- b # 삭제된 라인 c # 변경된 라인 주변 3라인을 출력 (첫번째 라인) d # (두번째 라인) e # (세번째 라인)
    • Context Format: 출력 예제(상세)(이전 페이지에서 계속)--- 1,8 ---- Hello,! I am bar, # 변경된 라인 a c # 변경된 라인 전/후로 3라인이 여기까지 겹치므로, d # 모두 한 번에 출력된다. e+ f # 추가된 라인+ g # 추가된 라인
    • Context Format: 출력 예제(상세)$ diff -C 1 foo bar # 주변 라인 1개까지만 출력한다.*** foo 2013-01-29--- bar 2013-01-29****************** 1,5 **** Hello,! I am foo, a- b c # 변경 라인 이후의 1개 라인만 출력됨--- 1,4 ---- Hello,
    • Context Format: 출력 예제(상세)(이전 페이지에서 계속)! I am bar, a c****************** 7 **** # 주변 라인을 1개만 출력하면 변경 부분이--- 6,8 ---- # 겹치지 않으므로, 분리해 출력한다. e # 마찬가지로, 변경 라인 전의 1라인만 출력됨+ f+ g # 변경 라인이자 파일의 마지막이다
    • Unified Format$ diff -u foo bar• `-u` 옵션을 사용하며, `-U 라인수`, `--unified[=라인수]` 옵션으로 주변 라인 개수를 설정할 수 있다.• Context Format과 비슷하지만, 변경된 부분의 주변 라인의 중복을 제거하고, 두 파일의 변화를 한 번에 볼 수 있어 간략하다.
    • 예제 텍스트<원본 파일:foo> <새 파일:bar>1 Hello, 1 Hello,2 I am foo. 2 I am bar.3 a 3 a4 b 4 c5 c 5 d6 d 6 e7 e 7 f8 8 g 9
    • Unified Format: 출력 예제$ diff -u foo bar (좌측에서 계속)--- foo 2013-01-29 +f+++ bar 2013-01-29 +g@@ -1,7 +1,8 @@ Hello,-I am foo.+I am bar. a-b c d e
    • Unified Format: 출력 예제$ diff -U 1 foo bar (좌측에서 계속)--- foo 2013-01-29 +f+++ bar 2013-01-29 +g@@ -1,5 +1,4 @@ Hello,-I am foo.+I am bar. a-b c@@ -7 +6,3 e
    • Unified Format: 출력 형태• 각 파일의 이름과 수정시각을 나타내는 헤더 이후에, 두 파일의 변경 부분을 함께 출력한다.• 변경 부분의 시작에는 각 파일의 변경 범위를 출력하고, 이후에 각 라인이 출력된다. --- 원본파일 수정시각 +++ 새파일 수정시각 @@ -원본파일범위 +새파일범위 @@ [변경 키워드]각 파일의 라인
    • Unified Format: 변경 키워드• 출력되는 각 라인은, 변경된 경우 변경 키워드로 시작하고, 변경되지 않은 경우 공백으로 시작한다.• 변경 키워드는 다음과 같다. + : 새 파일에 추가됨 - : 원본 파일에서 삭제됨
    • Unified Format: 출력 예제(상세)$ diff -u foo bar--- foo 2013-01-29+++ bar 2013-01-29@@ -1,7 +1,8 @@ # 원본파일의 1,7라인이 Hello, # 새 파일의 1,8라인으로 변경됨-I am foo. # 원본 파일에서 삭제되고,+I am bar. # 새 파일에 추가됨. a-b # 변경 키워드 이후에 바로 라인이 출력되고, c # 변경되지 않은 경우 공백 이후에 출력됨 d e
    • Unified Format: 출력 예제(상세)(이전 페이지에서 계속)+f+g
    • Unified Format: 출력 예제(상세)$ diff -U 1 foo bar # 주변 라인을 1라인만 출력함--- foo 2013-01-29+++ bar 2013-01-29@@ -1,5 +1,4 @@ Hello,-I am foo.+I am bar. a-b c # 변경 라인 이후 1개 라인까지만 출력@@ -7 +6,3 # 주변 라인의 개수가 1라인이므로, e # 변경 부분을 분리해서 출력함
    • Unified Format: 출력 예제(상세)(이전 페이지에서 계속)+f+g
    • 정리• diff의 대표적인 출력 포맷은 다음과 같다. Normal Format: diff foo bar Context Format: diff -c foo bar Unified Format: diff -u foo bar
    • 참고• http://unixhelp.ed.ac.uk/CGI/man-cgi?diff• http://en.wikipedia.org/wiki/Diff• http://www.chemie.fu- berlin.de/chemnet/use/info/diff/diff_3.html#SEC10