diff3의 "-A"와 "-e"의 다른 출력을 어떻게 이해합니까?

diff3의 "-A"와 "-e"의 다른 출력을 어떻게 이해합니까?

디퓨틸 매뉴얼말하다, 안으로diff3 -A mine older yours

'--show-all' ('-A') 옵션은 충돌을 대괄호로 묶고 병합되지 않은 변경 사항뿐만 아니라 older에서 까지의 모든 변경 사항을 출력한다는 점을 제외하면 '-e' 옵션과 유사하게 작동합니다 .yours

세 개의 파일이 있고 각 파일에는 네 줄의 숫자가 있습니다.

$ paste f1 f2 f3
0   0   1
2   1   2
2   3   3
4   5   6

병합된 변경 사항이 없으므로 및 둘 다 병합되지 않은 변경 사항만 출력해야 한다는 것이 맞 -A습니까 -e?

-A에 의한 다음과 같은 다양한 출력을 어떻게 이해합니까 -e? ed를 이해 하기에는 지식이 부족한 것 같습니다 -A. 예를 들어 이 명령이 출력 끝에서 무엇을 하는지 잘 모르겠습니다 -A. 일반적으로 a명령 다음에는 추가할 줄이 나오지만 명령 뒤에는 줄이 없는 것 같습니다.

0a
<<<<<<< f1
.

감사해요.


f2에서 까지의 변경 사항 중 f3병합되지 않은 변경 사항은 다음과 같습니다.

$ diff3 -e f1 f2 f3
1,4c
1
2
3
6
.

f2에서 까지의 모든 변경 사항 f3(병합되지 않은 변경 사항 및 병합된 변경 사항 포함)은 다음과 같습니다.

$ diff3 -A f1 f2 f3
4a
||||||| f2
0
1
3
5
=======
1
2
3
6
>>>>>>> f3
.
0a
<<<<<<< f1
.

답변1

eddiff3 -A생성된 스크립트를 원본 파일에 적용하면 실제로 수행되는 작업을 확인할 수 있습니다.

$ diff3 -A f[123] >script.ed

( patch여기서 사용하고 있는데 여러분도 쓸 수 있지만 버퍼를 파일에 다시 쓰거나( ) 터미널에서 인쇄하려면( ) ed스크립트 끝에 명령을 추가해야 합니다. )w%p

$ patch f1 script.ed
Hmm...  Looks like an ed script to me...
Patching file f1 using Plan A...
done
$ cat f1
<<<<<<< f1
0
2
2
4
||||||| f2
0
1
3
5
=======
1
2
3
6
>>>>>>> f3

이는 파일의 이 비트에 대한 편집을 나타냅니다.모두이 특정 예에서는 파일)이 충돌입니다( <<<<<<<및 사이에 "동봉" 되어 있음 >>>>>>>). ("My Files")의 내용과 f1("Old Files" 및 "Your Files" 각각)의 내용을 제공하여 충돌이 무엇인지 보여줍니다.f2f3

이 컨텐츠와 생성된 컨텐츠의 차이점 은 생성된 스크립트가 에서 가능한 충돌을 무시하고 로 변환된다는 diff3 -e것입니다 .eddiff3 -ef1f3f2

$ diff3 -e f[123] >script.ed
$ patch f1 script.ed
Hmm...  Looks like an ed script to me...
Patching file f1 using Plan A...
done
$ cat f1
1
2
3
6

따라서 설명서에 "충돌이 포함되어 있습니다"라고 적혀 있으면 diff를 패치로 적용하면 해당 충돌 표시가 결과 파일에 삽입된다는 의미입니다.


그 순간까지차이를 읽어라, 모르시면 좀 어렵습니다 ed.

4a
||||||| f2
0
1
3
5
=======
1
2
3
6
>>>>>>> f3
.
0a
<<<<<<< f1
.

귀하의 의견의 마지막 부분은

0a
<<<<<<< f1
.

<<<<<<< f1편집 중인 파일의 맨 위에 텍스트 줄을 삽입합니다. 이렇게 하면 diff 자체에 f1(패치되는 파일의) 원본 내용이 포함될 필요가 없습니다 .

관련 정보