GNU/Linux >> Tutoriels Linux >  >> Linux

grep une grande liste contre un gros fichier

Essayez

grep -f the_ids.txt huge.csv

De plus, puisque vos modèles semblent être des chaînes fixes, fournir le -F l'option peut accélérer grep .

   -F, --fixed-strings
          Interpret PATTERN as a  list  of  fixed  strings,  separated  by
          newlines,  any  of  which is to be matched.  (-F is specified by
          POSIX.)

Utilisez grep -f pour cela :

grep -f the_ids.txt huge.csv > output_file

À partir du man grep :

-f FICHIER, --file=FICHIER

Obtenez des motifs à partir de FILE, un par ligne. Le fichier vide contient des motifs nuls et ne correspond donc à rien. (-f est spécifié par POSIX.)

Si vous fournissez un exemple d'entrée, nous pouvons peut-être même améliorer le grep conditionner un peu plus.

Tester

$ cat ids
11
23
55
$ cat huge.csv 
hello this is 11 but
nothing else here
and here 23
bye

$ grep -f ids huge.csv 
hello this is 11 but
and here 23

Linux
  1. Répertorier toutes les adresses e-mail dans un fichier avec grep

  2. Lire des modèles Grep à partir d'un fichier ?

  3. Comment "grep" un flux continu ?

  4. Compter les lignes dans les fichiers volumineux

  5. grep sans afficher le chemin/fichier :ligne

Commande Ls sous Linux (liste des fichiers et des répertoires)

Comment trouver une chaîne dans un fichier sous Linux

Comment créer un gros fichier de 1 Go ou 10 Go sous Linux

Utilisation de nc pour transférer un fichier volumineux

Rediriger strace vers le fichier

Comment grep une section d'un fichier dans bash shell