Linux diff 명령이 올바른 비교를 표시하지 않습니다.

Linux diff 명령이 올바른 비교를 표시하지 않습니다.

diff 명령을 사용하여 올바른 비교 테스트를 표시하는 방법을 제안하려면 여러분의 도움이 필요합니다. 파일이 두 개 있어요

파일 A:

2            1
3            4166
4            1186
5            14318
6            2451
7            64
10           3
11           18
20           5

파일 B:

3            3990
4            1144
5            14368
6            2439
7            64
10           3
11           18
20           5

병렬 비교를 표시하기 위해 이 방법으로 diff 명령을 실행하면 출력이 예상한 것과 다릅니다.

diff -y -W 60 FileA FileB

출력은 다음과 같습니다

2            1               |  3            3992
3            4166            |  4            1144
4            1186            |  5            14372
5            14318           |  6            2439
6            2451            <
7            64                 7            64
10           3                  10           3
11           18                 11           18
20           5                  20           5

예상되는 출력은 다음과 같아야 합니다.

2            1               <
3            4166            |  3            3992
4            1186            |  4            1144
5            14318           |  5            14372
6            2451            |  6            2439
7            64                 7            64
10           3                  10           3
11           18                 11           18
20           5                  20           5

즉, FileB의 첫 번째 줄이 누락되었지만 diff에서는 이를 캡처하지 못합니다. 이 문제를 해결하는 데 도움을 주실 수 있나요?

답변1

이것을 비교하는 방법에는 여러 가지가 있습니다

foo
bar

이와 관련하여

baz

라인을 비교하여. 당신은 그렇게 말할 수 있습니다

  1. foo첫 번째 파일 barbaz다른 줄에만 있습니다.
  2. 또는 foo및 은 첫 번째 파일에서만 baz다른 줄입니다 .bar
  3. 또는 첫 번째 파일에서만, 두 번째 파일에서만 가능합니다 foo.barbaz

모든 설명은 사실입니다. 처음 두 개는 diff -y서식 사용법에서 각각 두 줄을 차지하고 세 번째는 세 줄을 차지하므로 약간 더 좋습니다.

이 경우 diff -y세 개 대신 두 개의 행을 생성하는 것이 좋습니다. 그러나 여전히 선택할 수 있는 두 가지 설명이 있습니다.

이 변경 사항은 문자 하나만 변경하지만 비슷한 줄에 대한 개념이 없기 때문에 첫 번째 설명( bar대체된 부분)이 마음에 들 것입니다. 두 줄은 다르거나 다릅니다.bazdiff

귀하의 예에서는 5개의 선을 4개의 다른 선과 비교하기 위해 다음과 같이 가정할 수 있습니다.어느5개 라인 중 5개 라인은 첫 번째 파일에 고유하며 나머지 4개 라인은 이에 상응합니다. 첫 번째 줄이 삭제되었다고 하셨고, diff다섯 번째 줄이 삭제되었다고 말씀하셨습니다. 두 가지 방법 모두 유효합니다.

선 위에서 작동하기 때문 diff이고, 부분적으로만 달라지는 선의 개념이 없기 때문입니다.

나는 그것을 시도했고 wdiff텍스트와 함께 작동합니다. 이 도구는 3과 두 파일을 동일하게 4식별 할 수 있습니다. 그러나 출력이 다른 다른 도구입니다.56

관련 정보