GNU/Linux >> Linux Esercitazione >  >> Linux

Strumento per ottenere le righe in un file che non sono in un altro?

Esiste uno strumento in grado di ottenere le righe che contiene il file A, ma il file B no? Potrei creare un piccolo script semplice con, ad esempio, perl, ma se qualcosa del genere esiste già, risparmierò tempo d'ora in poi.

Risposta accettata:

Sì. Lo standard grep strumento per la ricerca di file per stringhe di testo può essere utilizzato per sottrarre tutte le righe in un file da un altro.

grep -F -x -v -f fileB fileA

Funziona utilizzando ogni riga in fileB come modello (-f fileB ) e trattandolo come una semplice stringa da abbinare (non una regolare regex) (-F ). Forza la corrispondenza su tutta la riga (-x ) e stampa solo le righe che non corrispondono (-v ). Quindi stai stampando le righe nel fileA che non contengono gli stessi dati di qualsiasi riga nel fileB.

Lo svantaggio di questa soluzione è che non tiene conto dell'ordine delle righe e se il tuo input ha righe duplicate in luoghi diversi potresti non ottenere ciò che ti aspetti. La soluzione è utilizzare un vero strumento di confronto come diff . Puoi farlo creando un file diff con il valore di contesto al 100% delle righe nel file, quindi analizzandolo solo per le righe che verrebbero rimosse se si converte il file A nel file B. (Nota anche questo comando rimuove la formattazione delle differenze dopo aver ottenuto le righe giuste.)

diff -U $(wc -l < fileA) fileA fileB | sed -n 's/^-//p' > fileC

Linux
  1. La differenza tra un comando integrato e uno che non lo è?

  2. Come ottenere la somma Md5 dei contenuti di una directory come una somma?

  3. Quando viene visualizzato il messaggio di errore "lavori:non trovati"?

  4. Come rimuovere le linee che appaiono sul file B da un altro file A?

  5. Come ottenere la dimensione di tar.gz nel file (MB) in python

8 comandi inquietanti che perseguitano il terminale

5 modi per contare il numero di righe in un file

Come copiare un file da un'altra directory a quella corrente?

Funzionalità di Rackspace Cloud Servers che non sono disponibili su Fortigate-VM

Come utilizzo le righe di un file come argomenti di un comando?

Come ottenere la dimensione fisica di un file in Linux?