grep -f
を使用できます :
grep -Ff "first-file" "second-file"
または完全な単語に一致する場合:
grep -w -Ff "first-file" "second-file"
更新: コメントによると:
awk 'FNR==NR{a[$1]; next} ($1 in a){delete a[$1]; print $1}' file1 file2
次のように grep を使用します:
grep -f firstfile secondfile
第二の選択肢
ファイル内の「予約済み」の単語がパターンとして扱われていることを指摘してくれた Ed Morton に感謝します。それが問題である場合 - そうである場合とそうでない場合があります - OP はパターンを使用しない次のようなものを使用できます:
ファイル「予約済み」
cat
dog
fox
およびファイル「テキスト」
The cat jumped over the lazy
fox but didn't land on the
moon at all.
However it did land on the dog!!!
awk スクリプトは次のようになります:
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
出力付き:
The cat jumped over the lazy
fox but didn't land on the
However it did land on the dog!!!
第 3 のオプション
別の方法として、非常に簡単に実行できますが、bash ではより時間がかかります:
while read r; do grep $r secondfile; done < firstfile