Andrea is studying for an entry-level GNU/Linux Sysdamin certification, and she needs to master the grep command. Please use the term "Free Software" vice "open source" as you answer the following questions.

  1. What is grep and what is its primary function?
  2. What is the history of grep?
  3. Is grep Free Software?
  4. What problem does grep solve?
  5. What are the strengths and weaknesses of grep?
  6. Please give and explain 10 examples of grep on a modern GNU/Linux computer system?

What is grep and its Primary Function?

grep (Global Regular Expression Print) is a command-line utility in GNU/Linux and other Unix-like operating systems. Its primary function is to search for patterns specified by the user within text files and output the lines that match these patterns. It's extensively used for searching plain-text data sets for lines that match a regular expression.

History of grep

  • Origins: grep was originally developed by Ken Thompson as a standalone application in 1973 for the Unix operating system.
  • Name: The name 'grep' comes from a command in the Unix text editor 'ed', which stands for 'g/re/p' (globally search for a regular expression and print).
  • Evolution: Over time, grep has been included in all Unix-like operating systems, including GNU/Linux distributions.

Is grep Free Software?

Yes, grep is Free Software. It's part of the GNU Project and is distributed under the GNU General Public License (GPL). This means it's free to use, modify, and distribute.

Problem grep Solves

grep is used for searching through one or more files for lines containing a match to the specified pattern. By using regular expressions, it allows for sophisticated pattern-matching and search techniques. This is extremely useful in tasks like log analysis, searching for occurrences of a string in files, and extracting information based on patterns.

Strengths and Weaknesses of grep


  1. Powerful and Versatile: Can handle complex pattern matching using regular expressions.
  2. Widely Available: Standard tool in all Unix-like systems.
  3. Efficient Searching: Fast in searching large volumes of text.


  1. Learning Curve: Regular expressions can be complex to new users.
  2. Limited to Text: Works only with plain text files.
  3. Basic Handling of Binary Files: Limited capability in handling binary files.

10 Examples of grep on a GNU/Linux System

  1. Basic Text Search:

    grep "text" file.txt

    Searches for the word "text" in 'file.txt'.

  2. Case-Insensitive Search:

    grep -i "text" file.txt

    Searches for "text" in 'file.txt' without considering case.

  3. Search in Multiple Files:

    grep "text" file1.txt file2.txt

    Searches for "text" in both 'file1.txt' and 'file2.txt'.

  4. Recursive Search in Directory:

    grep -r "text" /path/to/directory

    Recursively search for "text" in all files under the specified directory.

  5. Line Number of Matching String:

    grep -n "text" file.txt

    Prints line numbers along with the lines that match "text" in 'file.txt'.

  6. Count Number of Matches:

    grep -c "text" file.txt

    Counts the number of lines that contain the match.

  7. Show Only Matched Part of Line:

    grep -o "text" file.txt

    Shows only the part of the line that matches "text".

  8. Invert Match:

    grep -v "text" file.txt

    Shows lines that do not match "text".

  9. Match Whole Words:

    grep -w "text" file.txt

    Matches lines containing "text" as a whole word.

  10. Use Regular Expressions:

    grep "t[aeiou]xt" file.txt

    Matches lines with 'text', 'taxt', 'text', etc., in 'file.txt'.

These examples showcase the versatility of grep in searching and filtering text data, making it an indispensable tool for a GNU/Linux sysadmin.

You should also read: