Come Confrontare Due File di Testo con il Terminale di Linux

0
1015
Fatmawati Achmad Zaenuri/Shutterstock.com

Bisogno di vedere le differenze tra due versioni di un file di testo? Quindi le differenze tra il comando di cui hai bisogno. Questo tutorial mostra come utilizzare diff su Linux e macOS, in modo semplice.

Immersioni in diff

Il comando diff confronta due file e produce un elenco delle differenze tra i due. Per essere più precisi, si produce un elenco delle modifiche che devono essere fatte per il primo file, per creare una corrispondenza con il secondo file. Se si mantiene questo in mente, troverete più facile capire l’output diff. Il comando diff è stato progettato per trovare le differenze tra il codice sorgente e file di produrre un output che può essere letto e recitato da altri programmi, come ad esempio il comando patch. In questo tutorial, stiamo andando a guardare più utile human-friendly modi per utilizzare diff.

Andiamo a destra in immersione e analizzare i due file. L’ordine dei file sulla riga di comando determina i file diff ritiene essere il “primo file” e che ritiene di essere il “secondo file.” Nell’esempio riportato di seguito alfa1 è il primo file, e alfa2 è il secondo file. Entrambi i file contengono l’alfabeto fonetico, ma il secondo file, alfa2, ha avuto qualche ulteriore modifica, in modo che i due file non sono identici.

Siamo in grado di confrontare i file con questo comando. Tipo di confronto, uno spazio, il nome del primo file, lo spazio, il nome del secondo file e quindi premere Invio.

diff alfa1 alfa2

Come facciamo a sezionare che in uscita? Una volta che sai cosa cercare, non è poi così male. Ogni differenza è elencato a sua volta in una singola colonna, e ogni differenza è etichettato. L’etichetta contiene numeri di entrambi i lati di una lettera, come 4c4. Il primo numero è il numero di riga in alfa1, e il secondo numero è il numero di riga in alfa2. La lettera in mezzo può essere:

  • c: La linea di il primo file deve essere modificato in abbinamento con la linea in un secondo file.
  • d: La linea di il primo file deve essere eliminato per la seconda file.
  • un: contenuti Extra deve essere aggiunto il primo file per creare una corrispondenza con il secondo file.

Il 4c4 nel nostro esempio, ci dicono che la linea a quattro di alfa1 deve essere modificato per corrispondere linea a quattro di alfa2. Questa è la prima differenza tra i due file che diff trovato.

Le righe che iniziano con < con riferimento al primo file, nel nostro esempio, alfa1, e le linee che iniziano con > vedere il secondo file, alfa2. La riga < Delta ci dice che la parola Delta è il contenuto della linea a quattro in alfa1. La linea > Dave ci dice che la parola di Dave è il contenuto della linea a quattro in alfa2. Per riassumere quindi, abbiamo bisogno di sostituire Delta con Dave su linea a quattro in alfa1, per rendere corrispondenza della riga in entrambi i file.

Il cambiamento successivo è indicato dal 12c12. Applicando la stessa logica, questo ci dice che la linea 12 in alfa1 contiene la parola di Lima, ma la linea 12 della alfa2 contiene la parola Linux.

La terza modifica riguarda una linea che è stato eliminato dal alfa2. L’etichetta 21d20 è decifrato come “linea 21 deve essere eliminato dal file prima di fare entrambi i file da sincronizzare linea 20 in poi.” < Uniforme linea ci mostra il contenuto di una riga che deve essere eliminato dal alfa1.

Il quarto differenza è etichettato 26a26,28. Questa modifica si riferisce a tre linee extra che sono stati aggiunti alfa2. Nota al 26,28 in etichetta. Due-i numeri di riga, separati da una virgola rappresenta un intervallo di numeri di riga. In questo esempio, l’intervallo è da riga 26 di linea 28. L’etichetta viene interpretato come “alla riga 26 nel primo file, aggiungere linee 26 al 28 del secondo file.” Ci vengono mostrate le tre linee in alfa2 che devono essere aggiunti a alfa1. Questi contengono le parole Quirk, è Strano, e il Fascino.

Snappy One-Liners

Se si tutto quello che vuoi sapere è se due file sono uguali, utilizzare l’opzione-s (report file identici).

diff -s alfa1 alpha3

È possibile utilizzare l’opzione-q (breve) opzione per ottenere un altrettanto lapidaria dichiarazione circa i due file diversi.

diff -q alfa1 alfa2

Una cosa da guardare fuori per è che con due file identici-q (breve) opzione completamente vongole e non segnala nulla.

Una Visione Alternativa

I -y (side by side) opzione utilizza un layout diverso per descrivere le differenze di file. Spesso è utile per utilizzare l’opzione-W (larghezza) opzione con la vista affiancata, per limitare il numero di colonne visualizzate. Questo evita di brutto avvolgenti linee che rendere l’uscita di difficile lettura. Qui abbiamo detto diff per produrre un lato del display e per limitare l’uscita di 70 colonne.

diff -y -W 70 alfa1 alfa2

Il primo file sulla riga di comando, alfa1, viene mostrato a sinistra e la seconda riga su riga di comando, alfa2, è mostrato sulla destra. Le linee di ogni file vengono visualizzati, fianco a fianco. Ci sono indicatore di caratteri, accanto a quelle linee in alfa2 che sono stati modificati, cancellati o aggiunti.

  • |: Una linea che è stata modificata in un secondo file.
  • <:- Una linea che è stata eliminata dal secondo file.
  • >: Una linea che è stato aggiunto a seconda del file che non è il primo file.

Se si preferisce un più compatto al fianco di riepilogo delle differenze di file, utilizzare l’opzione –sopprimere il-comune-linee di opzione. Questo modo diff elenco modificati, aggiunti o eliminati soltanto per le linee.

diff -y -W 70 –sopprimere il-comune-linee di alfa1 alfa2

Aggiungere una Spruzzata di Colore

Un altro programma chiamato colordiff aggiunge il colore di evidenziazione per la diff di uscita. Questo rende molto più facile per vedere quali linee sono delle differenze.

L’uso di apt-get per installare questo pacchetto sul vostro sistema se si sta utilizzando Ubuntu o un’altra distribuzione basata su Debian. Su altre distribuzioni Linux, usare la vostra distribuzione di Linux strumento di gestione dei pacchetti, invece.

sudo apt-get install colordiff

Utilizzare colordiff, come è possibile utilizzare diff.

Infatti, colordiff è un wrapper per diff diff fa tutto il lavoro dietro le quinte. A causa di questo, tutte le opzioni diff lavorerà con colordiff.

Fornire Un Po ‘ Di Contesto

Per trovare una via di mezzo tra tutte le righe del file visualizzato sullo schermo e avere solo le righe modificate elencati, possiamo chiedere a diff di fornire un po ‘ di contesto. Ci sono due modi per fare questo. Entrambi i modi di raggiungere lo stesso scopo, che è quello di mostrare alcune righe prima e dopo ogni riga modificata. Sarete in grado di vedere cosa sta succedendo nel file dove la differenza è stata rilevata.

Il primo metodo utilizza l’-c (copiato contesto).

colordiff -c alfa1 alfa2

La diff di uscita ha un titolo. L’intestazione elenca i due nomi di file e la loro modifica. Ci sono gli asterischi (*) prima del nome del primo file e trattini (-) prima del nome del secondo file. Asterischi e trattini sarà utilizzato per indicare che il file di linee in uscita di appartenenza.

Una riga di asterischi con 1,7 al centro indica stiamo guardando linee di alfa1. Per essere precisi, stiamo guardando le linee di uno a sette. La parola Delta è contrassegnato. Ha un punto esclamativo ( ! ) a fianco di essa, ed è rosso. Ci sono tre linee di invariato il testo visualizzato prima e dopo che la linea in modo che possiamo vedere il contesto in cui la riga nel file.

La riga di trattini con 1,7 nel mezzo ci dice che sta ora cercando di linee da alfa2. Ancora una volta, stiamo guardando le linee di uno a sette, con la parola di Dave su linea a quattro contrassegnato come diverso.

Tre righe di contesto sopra e sotto ogni cambiamento è il valore predefinito. È possibile specificare il numero di righe di contesto si desidera diff a fornire. Per fare questo, utilizzare l’opzione-C (copiato contesto) opzione con la “C” maiuscola e fornire il numero di linee:

colordiff -C 2 alfa1 alfa2

La seconda diff opzione che offre il contesto è l’-u (contesto unitario).

colordiff -u alfa1 alfa2

Come prima, abbiamo una intestazione in uscita. I due file sono denominati, e loro tempi di modifica vengono visualizzati. Ci sono dei trattini (-) prima del nome di alfa1 e segni più (+) prima del nome del alfa2. Questo ci dice che i trattini sarà utilizzato per fare riferimento a alfa1 e segni più sarà utilizzato per fare riferimento a alfa2. Sparsi in tutto il listato sono le righe che iniziano con a segni (@). Queste linee di segnare l’inizio di ogni differenza. Essi ci dicono anche che le linee sono di ogni file.

Ci vengono mostrate le tre righe prima e dopo la riga contrassegnata come essere diversa, in modo che possiamo vedere il contesto del cambiamento di linea. In vista unificata, le linee si con la differenza sono visualizzati uno sotto l’altro. La linea da alfa1 è preceduto da un trattino e la linea da alfa2 è preceduto da un segno più. Questo display raggiunge in otto linee di cosa copiato contesto display al di sopra voluti quindici fare.

Come ci si aspetterebbe, ci si può chiedere diff di fornire esattamente il numero di righe di contesto unitario ci piacerebbe vedere. Per fare questo, utilizzare l’opzione-U (contesto unitario) opzione con un capitale di “U” e fornire il numero di righe che si vuole:

colordiff -U 2 alfa1 alfa2

Ignorando lo Spazio Bianco e la Cassa

Andiamo ad analizzare un altro due file, test4 e testo5. Questi sono i nomi dei sei di supereroi.

colordiff -y -W 70 test4 testo5

I risultati mostrano che il diff trova nulla di diverso con la Vedova Nera, Spider-Man e Thor linee. Si fa bandiera di modifiche con il Captain America, Ironman e Hulk linee.

Quindi, cosa c’è di diverso? Beh, in testo5 Hulk è scritto con caratteri minuscoli “h”, e Capitan America è uno spazio tra il “Capitano” e “America”. OK, questo è chiaro, ma cosa c’è di sbagliato con l’Ironman linea? Non ci sono differenze visibili. Ecco una buona regola del pollice. Se non la vedi, la risposta è uno spazio bianco. C’è sicuramente un randagio spazio o due, o un carattere di tabulazione, alla fine della riga.

Se non importa a voi, è possibile indicare a diff di ignorare determinati tipi di linea di differenza, tra cui:

  • -io: Ignora le differenze nel caso.
  • -Z: Ignorare spazio bianco finale.
  • -b: Ignora i cambiamenti nella quantità di spazio bianco.
  • -w: Ignora tutto lo spazio bianco che cambia.

Chiediamo diff a controllare quei due file di nuovo, ma questa volta per ignorare tutte le differenze del caso.

colordiff -i-y -W 70 test4 testo5

Le linee con “Hulk” e “hulk” sono ormai considerati un match, e nessuna differenza è contrassegnato per il minuscolo “h.” Chiediamo a diff di ignorare spazio bianco finale.

colordiff -i-Z -y -W 70 test4 testo5

Come sospettato, spazio vuoto finale deve essere stata la differenza sull’Ironman linea, perché diff non sono più le bandiere di una differenza di quella linea. Che lascia Captain America. Chiediamo a diff di ignorare caso e di ignorare tutti i problemi di spazio bianco.

colordiff -i-w -y -W 70 test4 testo5

Raccontando diff di ignorare le differenze che non siamo preoccupati, diff ci dice che, per i nostri scopi, il file partita.

Il comando diff, ha molte più opzioni, ma la maggior parte di loro si riferiscono alla produzione leggibile da una macchina uscita. Questi possono essere recensito su Linux uomo pagina. Le opzioni che abbiamo utilizzato negli esempi di cui sopra vi permetterà di rintracciare tutte le differenze tra le versioni dei tuoi file di testo, utilizzando la riga di comando e umana bulbi oculari.