GNU/Linux >> Linux Esercitazione >  >> Linux

Confrontando due elenchi non ordinati in Linux, elencando l'univoco nel secondo file

Devi usare comm :

comm -13 first.txt second.txt

farà il lavoro.

p.s. l'ordine del primo e del secondo file nella riga di comando è importante.

inoltre potrebbe essere necessario ordinare i file prima:

comm -13 <(sort first.txt) <(sort second.txt)

nel caso in cui i file siano numerici aggiungere -n opzione a sort .


Dovrebbe funzionare

comm -13 <(sort file1) <(sort file2)

Sembra che sort -n (numerico) non possa funzionare con comm, che utilizza internamente sort (alfanumerico)

f1.txt

1
2
21
50

f2.txt

1
3
21
50

21 dovrebbe apparire nella terza colonna

#WRONG
$ comm <(sort -n f1.txt) <(sort -n f2.txt)   
                1
2
21
        3
        21
                50

#OK
$ comm <(sort f1.txt) <(sort f2.txt)
                1
2
                21
        3
                50

cat f1.txt f2.txt | sort |uniq > file3

grep -Fxv -f first-file.txt second-file.txt

Fondamentalmente cerca tutte le righe in second-file.txt che non corrispondono a nessuna riga in first-file.txt . Potrebbe essere lento se i file sono di grandi dimensioni.

Inoltre, una volta ordinati i file (usa sort -n se sono numerici), allora comm dovrebbe anche aver funzionato. Che errore dà? Prova questo:

comm -23 second-file-sorted.txt first-file-sorted.txt

Linux
  1. Copia i file nel terminale Linux

  2. Rinominare un file nel terminale Linux

  3. Sposta i file nel terminale Linux

  4. Linux:come si controllano le informazioni sulla struttura delle directory di un file Unix/linux?

  5. Qual è lo scopo del file .bashrc in Linux

Introduzione al file system Linux

Comando ls in Linux per elencare i file

Come limitare la profondità dell'elenco di file ricorsivi in ​​Linux

10 esempi utili del comando di ordinamento in Linux

Proteggi Linux con il file Sudoers

Confronto di due file nel terminale Linux