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