GNU/Linux >> Linux Esercitazione >  >> Linux

Output delle linee comuni (somiglianze) di due file di testo (l'opposto di Diff)?

Diff è un ottimo strumento per visualizzare le modifiche tra due file. Ma come visualizzare le somiglianze di due file di testo (ignorando le differenze)?

Cioè. input di esempio:

a:
Foo Bar
X
Hello
World
42

b:
Foo Baz
Hello
World
23

Pseudo output (qualcosa del genere):

@@ 2,3
=Hello World

Ordinare entrambi i file e usare comm non è sufficiente, perché in tal caso le informazioni sulla riga vengono perse.

Risposta accettata:

Che ne dici di usare diff, anche se non vuoi un diff? Prova questo:

diff --unchanged-group-format='@@ %dn,%df 
  %<' --old-group-format='' --new-group-format='' 
  --changed-group-format='' a.txt b.txt

Ecco cosa ottengo con i tuoi dati di esempio:

$ cat a.txt 
Foo Bar
X
Hello
World
42
$ cat b.txt 
Foo Baz
Hello
World
23
$ diff --unchanged-group-format='@@ %dn,%df
%<' --old-group-format='' --new-group-format='' 
  --changed-group-format='' a.txt b.txt
@@ 2,3
Hello
World

Linux
  1. Come memorizzare il risultato di diff in Linux

  2. Visualizza due file affiancati

  3. Come salvare l'output di questo comando awk su file?

  4. Come ottenere la differenza (solo aggiunte) tra due file in Linux

  5. Unisci manualmente due file usando diff

Cerca testo sull'output del terminale?

Utilizzo del comando Diff per confrontare due file nel terminale Linux

Confronto di due file nel terminale Linux

Come posso differenziare due file XML?

Rimuovi in ​​modo efficiente le ultime due righe di un file di testo estremamente grande

Come differenziare solo la prima riga di due file?