Try it here
grep command

UNIX/LINUX grep command


Grep command in Unix/Linux is the short form of 'global search for the regular expression'.

The grep command is a filter that is used to search for lines matching a specified pattern and print the matching lines to standard output.


grep [options] [pattern] [file]

The pattern is specified as a regular expression. A regular expression is a string of characters that is used to specify a pattern matching rule. Special characters are used to define the matching rules and positions.

  1. Anchor Characters: '^' and '$' at the beginning and end of the pattern are used to anchor the pattern to the start of the line, and to the end of the line respectively.

    Example : "^Name" matches all lines that start with the string "Name".

  2. Wildcard Character: '.' Is used to match any character.

    Example : "^.$" will match all lines with any single character.

  3. Escaped Characters: Any of the special characters can be matched as a regular character by escaping them with a '\'.

    Example: "$*" will match the lines that contain the string "$*".

  4. Character Range: A set of characters enclosed in a '[' and ']' pair specify a range of characters to be matched.

    Example: "[aeiou]" will match all lines that contain a vowel. A hyphen can be used while specifying a range to shorten a set of consecutive characters. E.g. "[0-9]" will match all lines that contain a digit. A carat can be used at the beginning of the range to specify a negative range. E.g. "[^xyz]" will match all lines that do not contain x, y or z.

  5. Repetition Modifier: A '*' after a character or group of characters is used to allow matching zero or more instances of the preceding pattern.

The grep command supports a number of options for additional controls on the matching:

  • -i: performs a case-insensitive search.
  • -n: displays the lines containing the pattern along with the line numbers.
  • -v: displays the lines not containing the specified pattern.
  • -c: displays the count of the matching patterns.
  • -h: Display the matched lines, but do not display the filenames.
  • -l: Displays list of a filenames only.
  • -e exp: Specifies expression with this option. Can use multiple times.
  • -f file: Takes patterns from file, one per line.
  • -E: Treats pattern as an extended regular expression (ERE).
  • -w: Match whole word
  • -o: Print only the matched parts of a matching line, with each such part on a separate output line.


  • Match all lines that start with 'hello'. E.g: "hello world"
    $ grep "^hello" file1
  • Match all lines that end with 'done'. E.g: "well done"
    $ grep "done$" file1
  • Match all lines that contain any of the letters 'a', 'b', 'c', 'd' or 'e'.
    $ grep "[a-e]" file1
  • Match all lines that do not contain a vowel
    $ grep "[^aeiou]" file1
  • Match all lines that contain the word hello in upper-case or lower-case
    $ grep -i "hello"
  • Inverting the pattern match : You can display the lines that are not matched with the specified search sting pattern using the -v option.
    $ grep -v "unix" file1
  • Specifies expression with -e option. Can use multiple times :
    $ grep –e "Agarwal" –e "Aggarwal" –e "Agrawal" file1

Writer profile pic

Admin on Jun 28, 2019 at 12:03 am

If you like and would like to contribute, you can write your article here or mail your article to . See your article appearing on the main page and help others to learn.

Post Comment

Comments( 0)




Forgot Password

Please enter your email address below and we will send you information to change your password.