Come confrontare due file su Linux
Per confrontare il contenuto di due file sul sistema operativo Linux, sulla linea comandi ( terminale ) posso usare i comandi diff, sdiff e vimdiff.
Il comando diff
Il comando diff verifica il contenuto di due file ed evidenzia le differenze.
La sintassi del comando è la seguente:
diff [nomefile1] [nomefile2]
Un esempio pratico
In una cartella ho due file di testo: prova1.txt e prova2.txt
Il contenuto del file prova1.txt è
Roma
Firenze
Bari
Mentre il contenuto del file prova2.txt è
Roma
Milano
Firenze
Per scoprire le differenze tra i due file digito
diff prova1.txt prova2.txt
Il comando diff elabora i due file e visualizza in output le differenze che trova.
Nella prima riga (3c3) il comando indica rispettivamente i numeri di linea del primo e del secondo testo dove ha trovato le differenze.
Nota. Il carattere che separa i numeri può essere 'c' (modifica), 'd' (cancellazione), 'a' (aggiunta), a seconda del tipo di differenza tra i due file.
Nelle righe successive il comando mostra le stringhe vere e proprie che caratterizzano la differenza.
Il testo che segue il simbolo < appartiene al primo file. Quello che segue il simbolo > al secondo file.
Pro e contro del comando diff
Il comando diff è molto semplice ed è presente in tutte le distribuzioni.
Inoltre, ha il vantaggio della sintesi perché visualizza soltanto le parti differenti del contenuto.
E' utile soprattutto per mettere a confronto file di grandi dimensioni.
Tuttavia, inizialmente è un po' difficile da interpretare.
Il comando sdiff
Il comando sdiff mette a confronto due file, visualizzandone il contenuto di entrambi, uno accanto all'altro.
La sintassi è la seguente:
sdiff [nomefile1] [nomefile2]
Un esempio pratico
Riprendo l'esempio precedente dei due file prova1.txt e prova2.txt.
Per confrontarli digito sulla riga comandi
sdiff prova1.txt prova2.txt
Il comando sdiff analizza il contenuto dei due file e lo visualizza sul terminale.
La differenza viene evidenziata dal simbolo pipe (|).
Il segno minore (<) viene mostrato nelle righe che esistono soltanto nel primo file, mentre il segno maggiore (>) sulle righe che esistono soltanto nel secondo file di testo.
Pro e contro del comando sdiff
Il comando sdiff è molto più intuitivo e semplice da capire rispetto a diff.
Tuttavia, se i file sono molto grandi è poco utile, perché il testo da scorrere è eccessivo.
Quindi, il comando sdiff è utile soltanto per confrontare file di piccole dimensioni.
Il comando Vimdiff
Il comando vimdiff paragona il contenuto di due file di testi, mostrandone il contenuto su un editor testuale.
La sintassi del comando è la seguente:
vimdiff [nomefile1] [nomefile2]
Un esempio pratico
Voglio mettere a confronto i file prova1.txt e prova2.txt
Apro la riga comandi e scrivo
vimdiff prova1.txt prova2.txt
Il comando vimdiff legge i due file e visualizza il contenuto sullo schermo.
Le parti modificate sono evidenziate con colori diversi ( rosso ).
Per uscire dall'editor e tornare alla riga comandi, premo CTRL+Z.
Pro e contro di vimdiff
Il comando vimdiff è simile a sdiff.
Ha però il vantaggio di evidenziare le modifiche usando i colori e di consentire l'utilizzo di altri comandi operativi.
Tuttavia, a volte vimdiff non è incluso di default nella distro e va installato.