(diff의 출력에 의존하고 해석하는 vimdiff를 사용하여 이 문제에 부딪혔기 때문에 diff 문제라고 생각합니다.)
이러한 파일이 주어지면 첫 번째 파일은 2줄, 두 번째 파일은 4줄로 diff(GNU 3.3)는 전체 파일을 표시합니다.
< 09/02/2014 | CFCU Checking | PAYPAL | 12.99 | | 12.99
< 09/03/2014 | CFCU Checking | PAYPAL | 24.45 | | 37.44
---
> 09/02/2014 | Expenses : Advertising | Closed | | 12.99 | 12.99
> 09/02/2014 | CFCU Checking | PAYPAL | 12.99 | | 0.00
> 09/03/2014 | Expenses : Advertising | Closed | | 24.45 | 24.45
> 09/03/2014 | CFCU Checking | PAYPAL | 24.45 | | 0.00
이로 인해 vimdiff는 공유된 콘텐츠가 거의 없다고 생각하게 됩니다. 아래 이미지 상단과 같이 1행의 처음 13자, 2행의 처음 4자를 일치시키고 3행과 4행을 신규로 처리합니다.
이 경우 diff(따라서 vimdiff)가 아래 이미지의 중앙에 표시하도록 삽입된 줄 대신 개행 문자를 추가하는 데 많은 시간을 소비했습니다.
vimdiff가 이 부분을 이미지의 아래쪽으로 처리하도록 diff에서 이를 더 잘 분리할 수 있는 방법이 있나요? (저는 포토샵으로 했습니다.)
위에 표시된 것처럼 1개가 아닌 4개의 부품이 필요합니다. 그것은 다음과 같습니다:
#,#c#,#
---
> 09/02/2014 | Expenses : Advertising | Closed | | 12.99 | 12.99
#,#c#,#
< 09/02/2014 | CFCU Checking | PAYPAL | 12.99 | | 12.99
---
> 09/02/2014 | CFCU Checking | PAYPAL | 12.99 | | 0.00
#,#c#,#
---
> 09/03/2014 | Expenses : Advertising | Closed | | 24.45 | 24.45
#,#c#,#
< 09/03/2014 | CFCU Checking | PAYPAL | 24.45 | | 37.44
---
> 09/03/2014 | CFCU Checking | PAYPAL | 24.45 | | 0.00
참고로, vimdiff는 다양한 diff 옵션과 함께 사용할 수 있지만 diffexpr
기본 ed
스타일 diff가 필요합니다.
그래서 diff가 같은 섹션에서 변경된 행과 삽입된 행을 혼합하지 않도록 하는 방법을 찾고 있는 것 같습니다.
답변1
종종 효과가 있는 한 가지 접근 방식은 다음을 추가하는 것입니다.문맥, 작은 인접 차이가 보다 응집력 있는 디스플레이로 수집됩니다.
- 명령줄에서
diff
, 이-C
옵션을 사용하여 이를 수행할 수 있습니다. - 그리고
vimdiff
,당신은 그것을 사용할 수 있습니다diffopt
예를 들어 설정 및context
기능은 암시적 기본값입니다.
diffopt=padding 설정, 컨텍스트: 6
예를 들어 변경할 수 있습니다.
diffopt+= 컨텍스트 설정:9 diffopt=padding 설정, 컨텍스트: 9
게다가:
- 기본
diff
유틸리티에는 줄이 서로 바뀌었는지 여부를 감지할 방법이 없습니다. - 또한 특정 열을 무시하면서 파일을 비교할 방법도 없습니다.
주어진 예는 날짜별로 정렬된 일련의 거래로 보입니다. 다른 정렬(변경되지 않은 행의 더 큰 블록을 생성하는 경향이 있음)이 있는 경우 데이터를 다시 정렬하는 것이 도움이 될 수 있습니다.
원칙적으로 귀하는할 수 있다사용diffexpr
특정 열만 비교되도록 데이터를 전/후 처리하는 스크립트를 설정하고 작성합니다. 그 방법을 사용했어요곧 돌아오세요자유 형식(글꼴 수준) 비교를 위한 유틸리티입니다. 그러나 이렇게 하려면 상당한 작업이 필요하며 diff는 입력 열을 무시할 수 없기 때문에 사소한 일이 아닙니다.