Ho bisogno di lavorare con file di grandi dimensioni e devo trovare le differenze tra due. E non ho bisogno dei diversi bit, ma del numero di differenze.Come contare le differenze tra due file su linux?
Per trovare il numero di righe diverse vengo con
diff --suppress-common-lines --speed-large-files -y File1 File2 | wc -l
e funziona, ma c'è un modo migliore per farlo?
E come contare il numero esatto di differenze (con strumenti standard come bash, diff, awk, qualche vecchia versione di perl)?
Questo non funziona, come io definisco "di lavoro" http: // pastie. org/paste/3179433/text Ci sono solo un carattere in ogni file, a cosa si riferisce il numero "4"? –
Questo funziona. Per il tuo esempio hai quattro righe: le prime due sono il nome di ciascun file (come spiegato nella risposta), e le altre due sono le due differenze, 1 riga con 'a' rimossa e 1 riga con 'b' aggiunta. –
Dipende da come si contano le differenze. In questo esempio [pastie.org/5553254](http://pastie.org/5553254), considero che ci sono 2 righe che differiscono, cioè sono d'accordo con sequoia mcdowell. È anche scomodo dover sottrarre 2 dal risultato (a causa della stampa dei 2 file diff: ed). Pertanto, penso che la risposta di Josh sia corretta. Può essere leggermente abbreviato usando l'opzione -c (count) su grep, invece di piping su wc -l, come questo: 'diff -U 0 file1 file2 | grep -c^@ ' –