Puoi usare grep -f
:
grep -Ff "first-file" "second-file"
OPPURE per abbinare parole intere:
grep -w -Ff "first-file" "second-file"
AGGIORNAMENTO: Come da commenti:
awk 'FNR==NR{a[$1]; next} ($1 in a){delete a[$1]; print $1}' file1 file2
Usa grep in questo modo:
grep -f firstfile secondfile
SECONDA OPZIONE
Grazie a Ed Morton per aver sottolineato che le parole nel file "riservato" sono trattate come schemi. Se questo è un problema - potrebbe esserlo o meno - l'OP può forse usare qualcosa del genere che non usa schemi:
File "riservato"
cat
dog
fox
e file "testo"
The cat jumped over the lazy
fox but didn't land on the
moon at all.
However it did land on the dog!!!
Lo script Awk è così:
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
con output:
The cat jumped over the lazy
fox but didn't land on the
However it did land on the dog!!!
TERZA OPZIONE
In alternativa, può essere fatto abbastanza semplicemente, ma più lentamente in bash:
while read r; do grep $r secondfile; done < firstfile