2015-01-07 7 views
1

일반 파일의 경우 일반 줄을 찾기 위해 comm 명령을 사용할 수 있습니다.은 이진 파일을 비교하고 일치하는 줄의 오프셋 만 인쇄합니다.

예를 들어

우리는 같은 비교 두 개의 파일

$ cat f1 
line1 
line2 
line3 
line4 
line5 

$ cat f2 
line1 
line20 
line30 
line4 
line5 

있습니다

$ comm -12 f1 f2 
line1 
line4 
line5 

이 어떻게 일치하는 라인의 오프셋 (offset)를 찾을 수 또한 2 개 진 파일 및 인쇄 일치하는 라인에 대한 비교 작업을 수행하는 방법 오프셋?

나는 지난 1 시간 동안 diff, cmp, comm 같은 것을 사용 해왔다. 알아낼 수 없었다.

EDIT 1 : 정확한 해결책이 아니지만 vbindiff가 도움이됩니다.

+4

값. – ganbustein

+0

그래, 맞아.하지만이 파일들에서 첫 번째 80chars의 오프셋을 계산하는 법. –

+2

귀하의 질문은 이해하지만 귀하의 문제는 이해하지 못합니다. 무엇을 정말로 성취하고 싶습니까? 어떤 문제를 해결하고 싶습니까? – Klaus

답변

4

당신은 아마 cmp를 찾고 있습니다 :

CMP를 - man cmp에서 바이트

$ cmp f1 f2 
f1 f2 differ: byte 12, line 2 

$ cmp -b f1 f2 
f1 f2 differ: byte 12, line 2 is 12 ^J 60 0 

$ cmp -bl f1 f2 
12 12 ^J 60 0 
13 154 l  12 ^J 
14 151 i 154 l 
15 156 n 151 i 
16 145 e 156 n 
17 63 3 145 e 
18 12 ^J 63 3 
19 154 l  60 0 
20 151 i  12 ^J 
21 156 n 154 l 
22 145 e 151 i 
23 64 4 156 n 
24 12 ^J 145 e 
25 154 l  64 4 
26 151 i  12 ^J 
27 156 n 154 l 
28 145 e 151 i 
29 65 5 156 n 
30 12 ^J 145 e 
cmp: EOF on f1 

하여 두 파일을 바이트 비교 :

-b을 - 인쇄 바이트

이 라인이없는, 인쇄 서로 다른 바이트

-l 6,

출력 바이트 수를 --verbose하고 이진 파일의 경우 다른 바이트는

+0

감사합니다. cmp에는 일치하는 줄/바이트 오프셋을 인쇄하는 옵션이 있습니까? 다른 바이트에 대해 말하기 대신 –

+1

이진수로 처리되므로 이러한 선의 개념은 없습니다. 출력이 어떻게 보이는지에 대해 잘 모르겠습니다. 분명히 할 수 있습니까? – fedorqui

+0

나는 그들이 공통 패턴을 갖고있는 오프셋을 이해하고 싶습니다. 예를 들면 다음과 같습니다 : cmp f1 f2 f1 f2 바이트 바이트 120, 12 행과 동일합니다. 도움을 주셔서 감사합니다. 제 경우에는 "vbindiff"를 찾았습니다. –