GNU/Linux >> Linux Esercitazione >  >> Linux

estrazione di valori univoci tra 2 set/file

Utilizzando alcune utilità meno conosciute:

sort file1 > file1.sorted
sort file2 > file2.sorted
comm -1 -3 file1.sorted file2.sorted

Questo produrrà duplicati, quindi se c'è 1 3 in file1 , ma 2 in file2 , questo produrrà ancora 1 3 . Se questo non è quello che vuoi, reindirizza l'output da sort fino a uniq prima di scriverlo in un file:

sort file1 | uniq > file1.sorted
sort file2 | uniq > file2.sorted
comm -1 -3 file1.sorted file2.sorted

Ci sono molte utilità nel pacchetto GNU coreutils che consentono ogni tipo di manipolazione del testo.


$ awk 'FNR==NR {a[$0]++; next} !($0 in a)' file1 file2
6
7

Spiegazione di come funziona il codice:

  • Se stiamo lavorando su file1, traccia ogni riga di testo che vediamo.
  • Se stiamo lavorando su file2 e non abbiamo visto il testo della riga, stampalo.

Spiegazione dei dettagli:

  • FNR è il numero di record del file corrente
  • NR è il numero di record complessivo corrente di tutti i file di input
  • FNR==NR è vero solo quando stiamo leggendo file1
  • $0 è la riga di testo corrente
  • a[$0] è un hash con la chiave impostata sulla riga di testo corrente
  • a[$0]++ traccia che abbiamo visto la riga di testo corrente
  • !($0 in a) è vero solo quando non abbiamo visto il testo della riga
  • Stampa la riga di testo se il modello precedente restituisce true, questo è il comportamento predefinito di awk quando non viene data alcuna azione esplicita

Linux
  1. estrazione di testo da file MS word in python

  2. Prodotto cartesiano di due file (come insiemi di righe) in GNU/Linux

  3. ricerca di valori univoci in un file di dati

  4. differenza tra file di dispositivo e driver di dispositivo

  5. Estrazione di file SFX in Linux

Installa Dropbox per condividere file tra Linux e Windows

Trasferisci file e cartelle tra computer con Croc

Sincronizza i file tra più sistemi con Syncthing

Condividi file tra desktop Linux con Warpinator

Trasferisci file tra qualsiasi dispositivo utilizzando Piping Server

Condivisione di file tra Linux Mint e Windows 10