grep
vs egrep
vs fgrep
egrep
is equivalent to grep -E
[1]. It interprets the pattern as an “extended regular expression”. In extended mode, some backslashes to escape certain characters are removed [2]:
Pattern with grep |
Pattern with egrep |
---|---|
abc\{3\} |
abc{3} |
a\(e\)+g |
a(e)g |
It looks like a good idea to always use egrep
or grep -e
first, since the regular expressions I’ve alredy used (for example in JavaScript) are extended regular expressions and not basic regular expressions.
fgrep
is equivalent to grep -F
[1]. It interprets the pattern as a list of fixed strings, separated by new lines, any of which is to be matched.
For example, if you have a file users.txt
with a list of users (one user on each line) and want to search the group file to see if any of the users are in it, you would use:
$ grep -F -f users.txt /etc/group
Sources:
[1] https://unix.stackexchange.com/questions/17949/what-is-the-difference-between-grep-egrep-and-fgrep
[2] https://en.wikibooks.org/wiki/Regular_Expressions/POSIX-Extended_Regular_Expressions