Syntax: grep [options] pattern [file]
-i
: ignore case of pattern-v
: reverse search-n
: display line numbers of lines matching pattern-c
: display total count of number of lines matching pattern-e
: used to specify multiple patternsgrep
is used to search for a particular string or pattern within a file or any given input. For example, to find if the word York
exists in a file that contains each state of the US,
nitin@jane-saucy:~$ grep York us_states.txt
New York
Remember that grep
is case-sensitive like most *nix commands. So searching for york
instead of York
will yield no results. To perform a case-insensitive search use the -i
command.
nitin@jane-saucy:~$ grep york us_states.txt
nitin@jane-saucy:~$
nitin@jane-saucy:~$ grep -i york us_states.txt
New York
You can also use regular expressions as a search pattern, like so,
nitin@jane-saucy:~$ grep [Zz] us_states.txt
Arizona
That gave us a list of states that had the alphabet Z
or z
in them, which was just one state, Arizona.
You can perform a reverse search, find every line that doesn't match the search pattern using the -v
switch.
nitin@jane-saucy:~$ grep -v [Zz] us_states.txt
Alabama
Alaska
Arkansas
California
Colorado
Connecticut
....
## Output truncated for the sake of brevity
To find the line numbers where the pattern was matched, you can use the -n
,
nitin@jane-saucy:~$ grep -n New us_states.txt
30:New Hampshire
31:New Jersey
32:New Mexico
33:New York
To find the total number of lines in a file that match the pattern, use the -c
switch,
nitin@jane-saucy:~$ grep -c New us_states.txt
4
You can also use multiple search patterns by specifying each pattern with the -e
switch
nitin@jane-saucy:~$ grep -e North -e South us_states.txt
North Carolina
North Dakota
South Carolina
South Dakota
You can also search multiple files with grep
, just tack the filenames at the end of the grep
command or use the -f
switch
nitin@jane-saucy:~$ grep -i new us_states.txt canada_provinces.txt
us_states.txt:New Hampshire
us_states.txt:New Jersey
us_states.txt:New Mexico
us_states.txt:New York
canada_provinces.txt:New Brunswick
canada_provinces.txt:Newfoundland
The most common use of grep
is to find a needle from a haystack of output from another command by piping like so,
nitin@jane-saucy:~$ history | grep wget
122 wget -c http://download.fedoraproject.org/pub/fedora/linux/releases/20/Fedora/x86_64/iso/Fedora-20-x86_64-DVD.iso
123 wget -c http://releases.ubuntu.com/14.04/ubuntu-14.04-desktop-amd64.iso
1306 history | grep wget
nitin@jane-saucy:~$ ps aux | grep gnome-terminal
nitin 5184 0.0 0.0 4440 624 ? Ss 22:36 0:00 /bin/sh -c gnome-terminal
nitin 5185 0.3 0.5 660652 22012 ? Sl 22:36 0:08 gnome-terminal
nitin 5968 0.0 0.0 13648 948 pts/11 S+ 23:20 0:00 grep --color=auto gnome-terminal
man grep
Download the official 2buntu app for both Android and Ubuntu Touch.