Reading grep patterns from a file
The -f
option specifies a file where grep reads patterns. That's just like passing patterns on the command line (with the -e
option if there's more than one), except that when you're calling from a shell you may need to quote the pattern to protect special characters in it from being expanded by the shell.
The argument -E
or -F
or -P
, if any, tells grep which syntax the patterns are written in. With no argument, grep expects basic regular expressions; with -E
, grep expects extended regular expressions; with -P
(if supported), grep expects Perl regular expressions; and with -F
, grep expects literal strings. Whether the patterns come from the command line or from a file doesn't matter.
Note that the strings are substrings: if you pass a+b
as a pattern then a line containing a+b+c
is matched. If you want to search for lines containing exactly one of the supplied strings and no more, then pass the -x
option.