2012-04-25 9 views
6

Sto usando il comando diff per confrontare due file di testo. Devono essere abbinati letteralmente.Diff-command: non stampa linee diverse ma dice che i due file sono diversi

Quindi io uso il diff:

diff binary.out binary.expected

(.. Tra l'altro, questi file non sono file binari sono file di testo che li chiamano binario perché questo è il nome del progetto)

e ottenuto

Binary files binary.out and binary.expected differ

Quando uso un altro strumento diff, il più intelligente di tutti (AKA ronzio a), e non c'è davvero nulla di diverso tra i due file.

Qualcuno capisce cosa sta succedendo qui?

Grazie.

+0

'diff' ha una nozione ristretta di" testo ". Potresti avere caratteri speciali che non sono poi così speciali: accenti, ritorni a capo. – geekosaur

+0

Non penso che i miei file di testo abbiano caratteri speciali. Tutto ciò che contengono sono la parola "BINARY SUM", la cifra "0" e "1" e alcuni caratteri "newline". Ma anche così, che non spiega mentre diff considerato i miei file file binari –

+0

Se non si dispone della sequenza LF/CR (riga feed/carriage return) alla fine di ogni stringa del file, quindi su Windows la maggior parte degli editor di testo tratterebbe questi file come binari. Questi simboli sono invisibili quando stai cercando il testo in modalità testo, ma prova a guardare i file in modalità binaria e dovresti vedere 0xD 0xA alla fine di ogni riga. – Flot2011

risposta

2

Assicurarsi di ignorare lo spazio bianco nelle opzioni di diff.

Può anche visualizzare caratteri Unicode e interpretarli come binari. Verifica se il tuo strumento di diffusione ha un'opzione per forzare la modalità testo.

5

diff dal diffutils dice il seguente sul testo/binario:

diff determina se un file è di testo o binario controllando i primi byte del file; il numero esatto di byte è dipendente dal sistema , ma in genere è di diverse migliaia. Se ogni byte in quella parte del file è non null, diff considera il file come testo; altrimenti considera il file come binario.

quindi diff GNU hanno una definizione molto aperto di ciò che è il testo, e l'uso dell'opzione --text per costringerlo a trattare il file come dovrebbe raramente essere necessaria testo.

Hai controllato se binary.out o binary.expected contiene caratteri null? Quale versione è il tuo programma diff?

Problemi correlati