98

I have a file A with 100 words in it separated by new lines. I would like to search file B to see if ANY of the words in file A occur in it.

I tried the following but does not work to me:

grep -F A B
fedorqui
  • 275,237
  • 103
  • 548
  • 598
Simd
  • 19,447
  • 42
  • 136
  • 271

2 Answers2

137

You need to use the option -f:

$ grep -f A B

The option -F does a fixed string search where as -f is for specifying a file of patterns. You may want both if the file only contains fixed strings and not regexps.

$ grep -Ff A B

You may also want the -w option for matching whole words only:

$ grep -wFf A B

Read man grep for a description of all the possible arguments and what they do.

legends2k
  • 31,634
  • 25
  • 118
  • 222
Chris Seymour
  • 83,387
  • 30
  • 160
  • 202
3

To find a very long list of words in big files, it can be more efficient to use egrep:

# remove the last \n of A
$ tr '\n' '|' < A > A_regex
$ egrep -f A_regex B
Benjamin Loison
  • 3,782
  • 4
  • 16
  • 33
Alcolo47
  • 91
  • 1
  • 4