📖 Scenario: You are working with a simple text file that contains a list of fruits and their colors. You want to find specific fruits by searching for text patterns inside this file.
🎯 Goal: Learn how to use the grep command to search for text patterns in a file and display matching lines.
📋 What You'll Learn
Create a text file named fruits.txt with exact content
Use a variable to store the search pattern
Use grep with the variable to find matching lines
Display the matching lines as output
💡 Why This Matters
🌍 Real World
Searching text files for specific words or patterns is common when working with logs, configuration files, or data files.
💼 Career
Knowing how to use grep helps in troubleshooting, data analysis, and automating tasks in many IT and software roles.
Progress0 / 4 steps
1
Create the text file fruits.txt
Create a file named fruits.txt with these exact lines: apple red banana yellow cherry red grape purple lemon yellow
Linux CLI
Hint
Use echo with -e and redirect output to fruits.txt.
2
Set a variable for the search pattern
Create a variable called pattern and set it to the exact string red.
Linux CLI
Hint
Use pattern=red to assign the string.
3
Use grep with the variable to find matching lines
Use the grep command with the variable $pattern to search inside fruits.txt and show matching lines.
Linux CLI
Hint
Use grep "$pattern" fruits.txt to search using the variable.
4
Display the matching lines
Run the script to display all lines from fruits.txt that contain the word red.
Linux CLI
Hint
The output should show only lines containing 'red'.
Practice
(1/5)
1. What does the grep command do in Linux?
easy
A. Searches text for lines matching a pattern
B. Deletes files matching a pattern
C. Copies files to another directory
D. Lists all files in a directory
Solution
Step 1: Understand the purpose of grep
The grep command is used to search text for lines that match a given pattern.
Step 2: Compare options
Options B, C, and D describe other commands like rm, cp, and ls, not grep.
Final Answer:
Searches text for lines matching a pattern -> Option A
Quick Check:
grep = search text lines [OK]
Hint: grep finds lines with your pattern in text [OK]
Common Mistakes:
Confusing grep with file commands like rm or cp
Thinking grep modifies files instead of searching
Assuming grep lists files instead of searching content
2. Which of the following is the correct syntax to search for the word error in a file named log.txt using grep?
easy
A. grep log.txt error
B. grep -f error log.txt
C. grep error log.txt
D. grep -e log.txt error
Solution
Step 1: Recall grep syntax
The basic syntax is grep [pattern] [file]. So to search for 'error' in 'log.txt', use grep error log.txt.
Step 2: Analyze other options
grep -f error log.txt uses -f which expects a file of patterns, not a pattern string. Options C and D have arguments reversed or incorrect flags.
Final Answer:
grep error log.txt -> Option C
Quick Check:
grep pattern file = grep error log.txt [OK]
Hint: Use grep pattern filename order to avoid errors [OK]
Common Mistakes:
Swapping pattern and filename positions
Using -f flag incorrectly for pattern string
Confusing -e flag usage
3. Given a file data.txt with the following content:
apple
banana
Apple
BANANA
apple pie
banana split
What is the output of the command grep -i 'apple' data.txt?
medium
A. apple
apple pie
B. Apple
BANANA
banana split
C. apple pie
banana split
D. apple
Apple
apple pie
Solution
Step 1: Understand -i option
The -i option makes grep case-insensitive, so it matches 'apple' and 'Apple'.
Step 2: Identify matching lines
Lines containing 'apple' ignoring case are: 'apple', 'Apple', and 'apple pie'.
Final Answer:
apple
Apple
apple pie -> Option D
Quick Check:
grep -i matches apple and Apple [OK]
Hint: Use -i to ignore case when searching text [OK]
Common Mistakes:
Ignoring case sensitivity without -i
Missing lines with partial matches like 'apple pie'
Confusing output order
4. You run the command grep -c 'fail' report.txt but it returns 0 even though you know the file contains the word 'fail'. What is the most likely reason?
medium
A. The file report.txt is empty
B. The word 'fail' is in uppercase like 'FAIL' and grep is case-sensitive by default
C. The grep command syntax is incorrect
D. The file report.txt does not exist
Solution
Step 1: Understand grep -c behavior
The -c option counts matching lines. If it returns 0, no exact matches were found.
Step 2: Consider case sensitivity
By default, grep is case-sensitive. If the file has 'FAIL' but you search 'fail', it won't match.
Final Answer:
The word 'fail' is in uppercase like 'FAIL' and grep is case-sensitive by default -> Option B
Quick Check:
grep is case-sensitive unless -i used [OK]
Hint: Use -i to ignore case if matches return zero [OK]
Common Mistakes:
Assuming grep ignores case by default
Not checking file content carefully
Mistaking syntax errors for no matches
5. You want to find how many lines in server.log contain the word timeout ignoring case, and display only the count. Which command should you use?
hard
A. grep -i -c timeout server.log
B. grep -i timeout server.log
C. grep timeout -i -c server.log
D. grep -c timeout server.log
Solution
Step 1: Identify options needed
You need to ignore case (-i) and count matching lines (-c).
Step 2: Check correct option order
Options can be combined as -i -c or -c -i. grep -i -c timeout server.log uses both correctly before pattern and file.
Step 3: Analyze other options
grep -c timeout server.log lacks case insensitivity. grep -i timeout server.log shows matches but not count. grep timeout -i -c server.log has incorrect argument order (pattern before options).
Final Answer:
grep -i -c timeout server.log -> Option A
Quick Check:
Use -i and -c together for case-insensitive count [OK]
Hint: Combine -i and -c to count ignoring case [OK]
Common Mistakes:
Omitting -i for case-insensitive search
Using pattern before options causing errors
Expecting output lines instead of count
Recommended
Ready to prove it?
Pass the test and this pattern moves unknownstrongwhile earning +1 Grip toward your certificate.