Sie können grep -f
verwenden :
grep -Ff "first-file" "second-file"
ODER andernfalls, um vollständige Wörter abzugleichen:
grep -w -Ff "first-file" "second-file"
AKTUALISIERUNG: Gemäß den Kommentaren:
awk 'FNR==NR{a[$1]; next} ($1 in a){delete a[$1]; print $1}' file1 file2
Verwenden Sie grep wie folgt:
grep -f firstfile secondfile
ZWEITE OPTION
Vielen Dank an Ed Morton für den Hinweis, dass die Wörter in der Datei „reserviert“ als Muster behandelt werden. Wenn dies ein Problem ist - es kann sein oder auch nicht - kann das OP vielleicht so etwas verwenden, das keine Muster verwendet:
Datei "reserviert"
cat
dog
fox
und Datei "text"
The cat jumped over the lazy
fox but didn't land on the
moon at all.
However it did land on the dog!!!
Awk-Skript sieht folgendermaßen aus:
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
mit Ausgabe:
The cat jumped over the lazy
fox but didn't land on the
However it did land on the dog!!!
DRITTE OPTION
Alternativ geht es auch ganz einfach, aber langsamer in bash:
while read r; do grep $r secondfile; done < firstfile