Diff e ignora le righe mancanti in un file

Voglio diffondere due file e ignorare le righe che sono presenti in un file ma mancanti nell'altro.

Per esempio

file1:

foo bar baz bat 

file2:

 foo ball bat 

Attualmente sto eseguendo il seguente command diff

 diff File1 File2 --changed-group-format='%>' --unchanged-group-format='' 

Che in questo caso produrrebbe

 bar baz 

come l'output, vale a dire solo linee mancanti o conflittuali. Vorrei printingre solo linee in conflitto, cioè ignorare i casi in cui una row manca da File2 e che è presente in File1 (non il contrario). C'è qualche modo per fare qualcosa di simile utilizzando diff o devo ricorrere ad altri strumenti? In caso affermativo, cosa lo consiglio?

Potresti anche dare un'occhiata a comm , se lo si dispone:

 comm [-1] [-2] [-3 ] file1 file2 -1 Suppress the output column of lines unique to file1. -2 Suppress the output column of lines unique to file2. -3 Suppress the output column of lines duplicated in file1 and file2. 

I file di input devono essere ordinati. Tuttavia, è ansible modificare il comportmento predefinito con l'opzione -nocheck-order, se disponibile.

Nel tuo caso vorresti il comm --nocheck-order -23 file filter_file

Quando dici di conflitto, intendi le voci che appaiono sia in File1 che in FIle2?

In caso affermativo, utilizzare quanto segue:

Crea uno script di shell chiamato mycmopare.sh e metta sotto di esso.

 #!/bin/bash File1Contents=$(cat File1) for i in $File1Contents; do grep $i File2 done 

Esegui mycompare.sh dalla directory in cui sono memorizzati File1 e File2.

Produzione:

 foo bat