GNU/Linux >> Linux Esercitazione >  >> Linux

Trovare il contenuto di un file in un altro file

grep stesso è in grado di farlo. Usa semplicemente il flag -f :

grep -f <patterns> <file>

<patterns> è un file contenente un modello in ogni riga; e <file> è il file in cui vuoi cercare le cose.

Nota che, per forzare grep per considerare ogni riga uno schema, anche se il contenuto di ogni riga sembra un'espressione regolare, dovresti usare il flag -F, --fixed-strings .

grep -F -f <patterns> <file>

Se il tuo file è un CSV, come hai detto, puoi fare:

grep -f <(tr ',' '\n' < data.csv) <file>

Ad esempio, considera il file "a.txt", con le seguenti righe:

alpha
0891234
beta

Ora, il file "b.txt", con le righe:

Alpha
0808080
0891234
bEtA

L'output del seguente comando è:

grep -f "a.txt" "b.txt"
0891234

Non hai bisogno di for - loop qui; grep stesso offre questa funzionalità.

Ora usando i tuoi nomi di file:

#!/bin/bash
patterns="/home/nimish/contents.txt"
search="/home/nimish/another_file.csv"
grep -f <(tr ',' '\n' < "${patterns}") "${search}"

Puoi cambiare ',' al separatore che hai nel tuo file.


Un'altra soluzione:

  • usa awk e crea il tuo hash (es. ahash), tutto controllato da te.
  • sostituisci $0 to $i e puoi abbinare tutti i campi che desideri.
awk -F"," '
{  
   if (nowfile==""){ nowfile = FILENAME;  }

   if(FILENAME == nowfile)
   {
     hash[$0]=$0;
   }
   else
   {
       if($0 ~ hash[$0])
       {  
           print $0
       }
   }
} '  xx yy

Linux
  1. Trovare il contenuto dell'applicazione OCP di blocchi e file in ODF:l'infrastruttura

  2. Come copiare o clonare i permessi da un file all'altro su Linux

  3. Copiare le ultime N righe da un file all'altro?

  4. Output del contenuto del file mentre cambiano?

  5. Copia l'intera gerarchia del file system da un'unità a un'altra

Trovare il contenuto dell'applicazione OCP di blocchi e file in ODF:creazione di un progetto di archiviazione file

Trovare il contenuto dell'applicazione OCP di blocchi e file in ODF:creazione del progetto

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

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

sostituire le righe in un file con le righe in un altro per numero di riga

Copia file di grandi dimensioni da un server Linux a un altro