diff는 차이점이 변경(예: 대체)인지 추가 및 삭제의 조합인지 어떻게 결정합니까?

diff는 차이점이 변경(예: 대체)인지 추가 및 삭제의 조합인지 어떻게 결정합니까?

diff차이점이 변경(즉, 대체)인지 아니면 추가와 삭제의 조합인지 어떻게 알 수 있는지 알고 싶습니다 .

내가 찾을 수 있었던 최고의 것디퓨틸 매뉴얼

'fct'

첫 번째 파일의 범위 f에 있는 줄을 두 번째 파일의 범위 t에 있는 줄로 바꿉니다. 추가 및 제거를 결합한 것과 비슷하지만 더 컴팩트합니다. 예를 들어, "5,7c8,10"은 파일 1의 5-7행을 파일 2의 8-10행으로 변경하거나, 파일 2를 파일 1로 변경하면 파일 2의 8-10행을 변경함을 의미합니다. 파일 1의 5~7행에 추가합니다.

예를 들어, 각각 4줄로 구성된 두 개의 파일이 있습니다.

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

나는 그것들을 구별한다

$ diff f2 f3
1d0
< 0
2a2
> 2
4c4
< 5
---
> 6

왜?

1d0
< 0
2a2
> 2

아니요

1,2c1,2
< 0
< 1
---
> 1
> 2

대신에?

내가 제공한 대안과 출력에는 모두 공통 행이 diff있지만 3내 대안은 공통 행 앞의 다른 행을 즉 c대체 항목으로 처리하는 반면, diff출력에서는 이를 삭제와 추가의 조합으로 처리합니다.

답변1

두 파일 사이의 LCS는 1 3가 아니라 입니다 3. 따라서 두 파일 사이에는 두 개가 아닌 세 개의 블록이 있습니다.

관련 정보