수천 줄이 포함된 두 개의 로그 파일이 있습니다. 전처리 후에는 일부 라인만 다릅니다. 나머지 행은 실제 차이이거나 섞인 행 그룹입니다.
통합 diff를 사용하면 자세한 차이점을 볼 수 있지만 육안으로 수동으로 비교하는 것은 어렵습니다. 병렬 비교는 비교에 더 유용해 보이지만 변경되지 않은 수천 줄을 추가하기도 합니다. 두 세계의 장점을 최대한 활용할 수 있는 방법이 있습니까?
이러한 로그 파일은 xscope
Xorg 프로토콜 데이터를 모니터링하는 프로그램에 의해 생성됩니다. 전문적인 웹 서버 접속 로그 분석 도구보다는 위와 비슷한 상황에 적용할 수 있는 일반적인 도구를 찾고 있습니다.
두 개의 샘플 로그 파일은 다음 위치에 있습니다.http://lekensteyn.nl/files/qemu-sdl-debug/( log13
그리고 log14
). xscope-filter
타임스탬프 및 기타 사소한 세부 정보를 제거하는 전처리기 명령은 파일에서 찾을 수 있습니다 .
답변1
내가 가장 자주 사용하는 두 가지 비교 도구는 다음과 같습니다.퓨전그리고차이점.
퓨전
Meld는 GUI이지만 파일 간의 차이점을 잘 보여줍니다. 변경 사항을 한 쪽에서 다른 쪽으로 이동하여 변경 사항을 병합하는 기능을 제공하므로 소프트웨어 개발에 더 적합하지만 직접적인 병렬 비교 도구로도 사용할 수 있습니다.
차이점
나는 수년 동안 이 도구를 사용해 왔습니다. 나는 일반적으로 다음 스위치를 사용하여 실행합니다.
$ sdiff -bBWs file1 file2
-b
공백 양의 변화를 무시합니다.-W
모든 공백은 무시됩니다.-B
모든 행이 비어 있는 변경 사항을 무시합니다.-s
공통 라인은 출력되지 않습니다.
일반적으로 로그 파일의 경우 열을 더 넓게 만들어야 하며, 이를 사용하여 -w <num>
화면을 더 넓게 만들 수 있습니다.
내가 사용하거나 사용하지 않는 다른 도구들
분화
미분균일한 diff 출력에 색상을 지정하는 Python 스크립트입니다.
$ diffc [OPTION] FILE1 FILE2
Wimdiv
Wimdiv아마도 meld만큼 좋을 것입니다. 더 좋지는 않더라도 터미널에서 실행할 수 있습니다. 나는 이 도구를 사용하는 것을 계속 잊어버리지만, 나에게는 이 도구가 일상적으로 사용하기가 약간 어렵다는 것을 알려주는 좋은 지표입니다. 하지만 YMMV.
답변2
현재 저는 diff와 grep을 나란히 사용하여 여러 줄을 필터링하고 있습니다.
diff -y -W250 log.txt log2.txt | expand | \
grep -E -C3 '^.{123} [|<>]( |$)' | colordiff | less -rS
- 옵션을 사용하면
-W250
더 많은 데이터를 볼 수 있도록 출력이 더 넓어집니다. expand
탭을 공백으로 변환해야 함-C3
grep 출력에 3줄의 컨텍스트를 추가합니다.^.{123}
나란히 차이점을 표시하기 전에 데이터의 절반을 일치시킵니다.colordiff
출력을 이해하기 쉽게 만들기less -rS
ANSI 색상 해석을 허용하고(-r
) 줄 바꿈을 방지합니다(-S
).
이것은 해킹이므로 대안을 환영합니다.
답변3
아무도 언급하지 않았어ICDIFF하지만? 훌륭해요! 사진은 스스로를 말합니다.
답변4
Linux "sdiff" 명령은 기본적으로 모든 줄을 포함하여 차이점을 나란히 표시하지만 다양한 옵션을 사용하여 차이점만 표시할 수도 있습니다.
sdiff -tWBs -w $COLUMNS config.xml config.xml.original
어디
-t: 탭을 공백으로 변환
-W: 공백 차이를 무시합니다.
-B: 빈 줄을 무시합니다.
-s: 동일한 줄을 무시합니다.
-w $COLUMNS: 화면의 전체 너비를 사용합니다.
표시된 줄은 |, < 또는 >로 구분됩니다. 설명서를 참조하거나 직접 사용해 보세요.