Puedes usar grep -f
:
grep -Ff "first-file" "second-file"
O bien para hacer coincidir palabras completas:
grep -w -Ff "first-file" "second-file"
ACTUALIZACIÓN: Según los comentarios:
awk 'FNR==NR{a[$1]; next} ($1 in a){delete a[$1]; print $1}' file1 file2
Usa grep así:
grep -f firstfile secondfile
SEGUNDA OPCIÓN
Gracias a Ed Morton por señalar que las palabras en el archivo "reservado" se tratan como patrones. Si eso es un problema, puede serlo o no, el OP tal vez pueda usar algo como esto que no usa patrones:
Archivo "reservado"
cat
dog
fox
y archivo "texto"
The cat jumped over the lazy
fox but didn't land on the
moon at all.
However it did land on the dog!!!
El script Awk es así:
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 salida:
The cat jumped over the lazy
fox but didn't land on the
However it did land on the dog!!!
TERCERA OPCIÓN
Alternativamente, se puede hacer de manera bastante simple, pero más lentamente en bash:
while read r; do grep $r secondfile; done < firstfile