Grep Command in Unix with Simple Examples

Learn Grep Command in Unix with Practical Examples:

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 command in Unix

Grep Command in Unix with Examples

Syntax:

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”. The strings “\<” and “\>” are used to anchor the pattern to the start and end of a word respectively.

#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.

Examples:

  • Match all lines that start with ‘hello’. E.g: “hello there”
$ 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 start with a digit following zero or more spaces. E.g: “ 1.” or “2.”
$ grep “ *[0-9]” file1
  • Match all lines that contain the word hello in upper-case or lower-case
$ grep -i “hello”

Conclusion

I'm sure that this tutorial would have helped you to get a good understanding of what is grep command in Unix and how it is used in various conditions.