GNU/Linux >> Linux Esercitazione >  >> Linux

11 Esempi di comandi Linux diff3 (confronta 3 file riga per riga)

Come già sai, il comando diff di Linux confronta due file.

Tuttavia, l'utilità diff3 di Linux confronta tre file ed è anche in grado di unire la differenza tra due file nel terzo. In questo articolo, capiremo l'uso del comando diff3 attraverso alcuni esempi.

La sintassi di base di diff3 è:

05

1. Uscita Diff3 di base

Per questo esempio, utilizziamo questi tre file:parent.txt, your.txt e mine.txt.

14

Ora, se il comando diff3 viene eseguito su questi tre file:

21

Vediamo che l'output contiene informazioni di confronto di tutti questi tre file. Nell'output sopra:

  • La prima riga '====' significa che tutti e tre i file differiscono.
  • Successivamente, la riga '1:1,2c' significa che per il primo (1:) file dato come argomento a diff3 (parent.txt nel nostro caso), le righe nell'intervallo da uno a due (1,2 ) sono diversi rispetto agli altri due file e devono essere modificati(c) e queste due righe vengono visualizzate anche nelle due righe successive dell'output.
  • In modo simile è possibile comprendere "2:1,2c" e "3:1,2c".

Tieni presente che oltre a utilizzare l'utilità diff3, è anche utile capire come utilizzare diff, colordiff, wdiff o vimdiff per il tipico confronto di due file.

2. Se due file su tre sono simili

Per questo esempio, supponiamo che i file mine.txt e parent.txt siano esattamente uguali.

35

E ora diff3 viene eseguito su questi tre file:

44

La prima riga '====3' significa che questa volta il file numero 3, ovvero il tuo.txt, è diverso dagli altri due. Questo è visibile anche nell'output.

3. 'c' sta per cambiare mentre 'a' sta per append

Fino ad ora, abbiamo visto un alfabeto "c" nell'output. Questa lettera significa "cambiamento" richiesto nelle righe/testo. Se viene visualizzata l'alfabeto "a", significa che è necessario aggiungere una riga.

Facciamo un altro esempio :

52

Ora esegui diff3 su questi tre file:

64

L'output sopra indica che la modifica in file3 (cioè your.txt) deve essere aggiunta a file1 (mine.txt) e file2 (parent.txt) per rendere tutti e tre i file simili. In alternativa, la seconda riga nel tuo.txt può essere modificata(c) per rendere tutti e tre i file simili.

4. Emetti le modifiche sovrapposte usando l'opzione -x

Il flag -x può essere utilizzato per emettere le modifiche che causano sovrapposizioni. L'ordine dei nomi dei file dati come argomento a diff3 è importante qui. Ad esempio :

76

significa che vuoi unire in mine.txt le modifiche che trasformerebbero parent.txt in your.txt

Facciamo un esempio :

83

Esegui diff3 ora:

93

Quindi vediamo che
l'output dice che la terza riga di mine.txt deve essere cambiata in "ciao" per unire le modifiche che trasformerebbero parent.txt in your.txt

5. Genera modifiche non unite usando l'opzione -e

L'opzione -e può essere utilizzata per generare modifiche non unite da parent.txt a your.txt in mine.txt.
Considerando gli stessi file usati nell'esempio sopra:

101

Quindi vediamo che l'output mostra le modifiche non unite.

6. Output del file unito usando l'opzione -m

Un file unito comprendente i contenuti di tutti e tre i file può essere prodotto usando l'opzione -m. Ad esempio, se di seguito sono riportati i tre file:

118

Ora se diff3 viene eseguito utilizzando l'opzione -m:

123

Quindi l'output sopra mostra il contenuto del file unito che ha unito il contenuto di tutti e tre i file forniti come argomenti a diff3.

7. Comprendere i conflitti usando l'opzione -m

La produzione di un file unito (dai tre file) non è sempre una passeggiata (come mostrato nell'esempio sopra).

Considera il contenuto del file di input di seguito:

138

Se diff3 viene eseguito sui file precedenti, viene visualizzato il seguente output:

140

Qui le prime due righe sono parte indiscussa del file unito, ma viene mostrato il conflitto effettivo tra <<<<<<>>>>>> insieme ai nomi e ai contenuti dei file.

8. Accetta un argomento da stdin usando '-'

Un '-' può essere utilizzato al posto di uno qualsiasi dei nomi di file per accettare l'input da stdin per quell'argomento.

153

Come possiamo vedere, quando è stato eseguito il comando sopra, il contenuto del terzo file è stato fornito tramite stdin. Nota che dopo aver inserito il contenuto del file da stdin, è necessario premere la combinazione di tasti ctrl+d per ottenere l'output di diff3.

9. diff3 utilizza lo strumento diff per confrontare i file

Sebbene diff3 si vanti di confrontare 3 file, in realtà utilizza lo strumento diff internamente per eseguire i confronti tra due file. Questo può essere confermato passando un eseguibile come argomento di input:

169

Quindi possiamo vedere nell'output sopra, l'errore del comando diff3 dice che il programma sussidiario "diff" non è riuscito.

10. Specificare un programma diff tramite l'opzione –diff-program

Il comando diff3 offre la flessibilità di fornire un programma diff come argomento in modo che lo stesso possa essere utilizzato per confrontare i file e fornire i risultati che possono essere utilizzati da diff3. Questa funzionalità si ottiene utilizzando l'opzione –diff-program.

172

11. Tratta tutti i file come testo usando l'opzione -a

Come puoi vedere nell'esempio 9 mostrato sopra, quando abbiamo passato un file non di testo (un eseguibile a.out), diff3 ha restituito un errore. Ma se vogliamo dire a diff3 di confrontare anche i file non di testo, è possibile utilizzare un'opzione -a che dice a diff3 di considerare tutti i file di input come file di testo. Ad esempio :

180

Quindi l'output sopra mostra che diff3 ha provato a confrontare anche un file eseguibile trattandolo come un file di testo.

Articoli Diff aggiuntivi

  • I 4 migliori strumenti per differenze di file su UNIX / Linux:Diff, Colordiff, Wdiff, Vimdiff
  • BZ è facile! bzdiff esempio
  • Differenza di file visivi con Vimdiff:fa la differenza!
  • Il potere dei comandi Z – Esempi Zdiff

Linux
  1. Comando mv in Linux:7 esempi essenziali

  2. Esempi di comandi tail di Linux

  3. 5 Esempi di comandi Wget per scaricare file in Linux.

  4. ln Esempi di comandi in Linux

  5. Caricamento di file sull'account S3 dalla riga di comando di Linux

lsof Command in Linux (10 esempi)

Touch Command in Linux (5 esempi)

Comando Linux WC con esempi

Esempi di comandi di Linux diff

Esempi di comandi di Linux cat

Esempi di comandi gzip di Linux