Linux/Unix: Text Search – grep, fgrep, egrep Explained with Examples
Introduction – Why Learn Text Search in Linux/Unix?
Text searching is one of the most powerful features of the Linux command line. Tools like grep, fgrep, and egrep allow you to search, filter, and extract information from massive files in seconds. These are essential for log analysis, pattern detection, and data parsing.
In this guide, you’ll learn:
- The difference between
grep,fgrep, andegrep - How to use regex (regular expressions) with
grep - Practical examples for searching patterns, filtering logs, and combining options
What is grep?
Syntax:
grep [options] pattern [file...]
Description:
Searches for lines that match a given pattern in one or more files or from stdin.
Basic Example:
grep "error" logfile.txt
Finds lines containing the word “error”.
Common grep Options
| Option | Description |
|---|---|
-i | Case-insensitive search |
-n | Show matching line numbers |
-v | Invert match (exclude pattern) |
-r | Recursive search through directories |
-l | Show filenames with matches only |
-c | Count matching lines |
-e | Specify multiple patterns |
--color | Highlight matching patterns |
Example:
grep -i "error" /var/log/syslog
grep -v "debug" logfile.txt # Exclude lines with 'debug'
fgrep – Fixed String grep (No Regex)
Syntax:
fgrep [options] string [file...]
Description:
Searches for exact string matches. It does NOT interpret special regex characters like *, ., [ etc.
Example:
fgrep "a+b" file.txt
Matches the literal string a+b without treating + as regex.
egrep – Extended grep with Extended Regex
Syntax:
egrep [options] pattern [file...]
Description:
Supports extended regular expressions (ERE) like +, ?, |, () without needing to escape them.
Example:
egrep "cat|dog" animals.txt
Matches lines that contain either “cat” or “dog”.
Grouping:
egrep "(error|fail|warn)" logfile.txt
Regular Expressions in grep (Basic)
| Pattern | Meaning |
|---|---|
. | Any single character |
* | Zero or more of the preceding char |
^ | Start of line |
$ | End of line |
[] | Character class |
\ | Escape special characters |
Example:
grep "^ERROR" log.txt # Lines starting with "ERROR"
grep "user[0-9]" data.txt # Matches user0, user1…user9
Combining grep with Other Commands
Count matching lines:
grep -c "404" access.log
Find IPs and sort by frequency:
cat access.log | awk '{print $1}' | sort | uniq -c | sort -nr | head
Recursive search for a keyword:
grep -rn "timeout" /etc/
Summary – Recap & Next Steps
Text search utilities like grep, fgrep, and egrep are powerful tools in any sysadmin or developer’s toolkit. They help you dig through logs, extract patterns, and automate validation—all directly from the command line.
Key Takeaways:
grepsupports basic regular expressions and is extremely flexible.fgrepis for fixed string searches (no regex).egrepsupports extended regex (like+,?,|) without escaping.- Use options like
-i,-v,-r, and--colorfor enhanced searching. - Combine with pipes for advanced pattern workflows.
FAQs
What’s the difference between grep, fgrep, and egrep?
grep: Supports basic regexfgrep: No regex; searches plain stringsegrep: Supports extended regex like+,|,()
How do I search recursively through folders?
Use:
grep -r "pattern" /path/to/folder
How can I highlight the search term?
Use:
grep --color=always "pattern" file.txt
How do I find lines that don’t contain a string?
Use:
grep -v "skipthis" file.txt
What replaces egrep and fgrep in modern systems?
GNU recommends using:
grep -E # For egrep
grep -F # For fgrep
Share Now :
