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.

il risultato del comando diff

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 (|).

un esempio di output del comando sdiff

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 ).

il risultato del comando vimdiff

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.

 


 

Segnalami un errore, un refuso o un suggerimento per migliorare gli appunti

FacebookTwitterLinkedinLinkedin
knowledge base

Libri di approfondimento

I file su Linux