A variety of grep implementations are available in many operating systems and software development environments. Early variants included egrep and fgrep, introduced in
Version 7 Unix. The egrep variant supports an
extended regular expression syntax added by
Alfred Aho after
Ken Thompson's original regular expression implementation. The fgrep variant searches for any of a list of
fixed strings using the
Aho–Corasick string matching algorithm. Binaries of these variants exist in modern systems, usually linking to grep or calling grep as a shell script with the appropriate flag added, e.g. . Commands egrep and fgrep, while commonly deployed on
POSIX systems, to the point the POSIX specification mentions their widespread existence, are actually not part of POSIX. Other commands contain the word "grep" to indicate they are search tools, typically ones that rely on regular expression matches. The
pgrep utility, for instance, displays the processes whose names match a given regular expression. In the
Perl programming language, grep is a built-in function that finds elements in a list that satisfy a certain property. This
higher-order function is typically named
filter or where in other languages. The pcregrep command is an implementation of grep that uses
Perl regular expression syntax. Similar functionality can be invoked in the GNU version of grep with the -P flag.
Ports of grep (within
Cygwin and
GnuWin32, for example) also run under
Microsoft Windows. Some versions of Windows feature the similar qgrep or
findstr command. A grep command is also part of
ASCII's
MSX-DOS2 Tools for
MSX-DOS version 2. The grep, egrep, and fgrep commands have also been ported to the
IBM i operating system. The software
Adobe InDesign has functions GREP (since CS3 version (2007)), in the
find/change dialog box "GREP" tab, and introduced with InDesign CS4 in
paragraph styles "GREP styles".
agrep agrep (approximate grep) is an
open-source approximate string matching program, developed by
Udi Manber and Sun Wu between 1988 and 1991, for use with the
Unix operating system. It was later ported to
OS/2,
DOS, and
Windows.
agrep matches even when the text only
approximately fits the search pattern. This following invocation finds netmasks in file myfile, but also any other word that can be derived from it, given no more than two substitutions. agrep -2 netmasks myfile This example generates a list of matches with the closest, that is those with the fewest, substitutions listed first. The command flag -B means "best": agrep -B netmasks myfile ==Usage as a verb==