🔍 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 :
