GNU/Linux >> Tutoriels Linux >  >> Linux

Comment retrouver des mots d'un fichier dans un autre fichier ?

Vous pouvez utiliser grep -f :

grep -Ff "first-file" "second-file"

OU sinon pour faire correspondre les mots complets :

grep -w -Ff "first-file" "second-file"

MISE À JOUR : Selon les commentaires :

awk 'FNR==NR{a[$1]; next} ($1 in a){delete a[$1]; print $1}' file1 file2

Utilisez grep comme ceci :

grep -f firstfile secondfile

DEUXIÈME OPTION

Merci à Ed Morton d'avoir signalé que les mots dans le fichier "réservé" sont traités comme des motifs. Si c'est un problème - cela peut être le cas ou non - l'OP peut peut-être utiliser quelque chose comme ceci qui n'utilise pas de modèles :

Fichier "réservé"

cat
dog
fox

et fichier "texte"

The cat jumped over the lazy
fox but didn't land on the
moon at all.
However it did land on the dog!!!

Le script Awk ressemble à ceci :

awk 'BEGIN{i=0}FNR==NR{res[i++]=$1;next}{for(j=0;j<i;j++)if(index($0,res[j]))print $0}' reserved text

avec sortie :

The cat jumped over the lazy
fox but didn't land on the
However it did land on the dog!!!

TROISIÈME OPTION

Alternativement, cela peut être fait assez simplement, mais plus lentement en bash :

while read r; do grep $r secondfile; done < firstfile 

Linux
  1. Comment copier ou cloner des autorisations d'un fichier à un autre sous Linux

  2. Trouver N mots les plus fréquents dans un fichier ?

  3. Comment copier une table d'une base de données mysql vers une autre base de données mysql

  4. Comment puis-je trouver un fichier spécifique à partir d'un terminal Linux ?

  5. Comment exécuter le fichier sh à partir d'un autre fichier sh

Comment trouver une chaîne dans un fichier sous Linux

Comment rechercher et copier certains types de fichiers d'un répertoire à un autre sous Linux

Comment extraire des adresses e-mail d'un fichier texte sous Linux

Comment copier un fichier d'un autre répertoire vers celui en cours ?

Comment télécharger un fichier par FTP depuis la ligne de commande ?

Copier un fichier volumineux d'un serveur Linux à un autre