Bird
Raised Fist0
Bash Scriptingscripting~20 mins

grep in scripts in Bash Scripting - Practice Problems & Coding Challenges

Choose your learning style10 modes available
Challenge - 5 Problems
🎖️
Grep Guru
Get all challenges correct to earn this badge!
Test your skills under time pressure!
💻 Command Output
intermediate
2:00remaining
Output of grep with multiple options
What is the output of this bash command when run on a file named data.txt containing the lines:
apple
banana
Apple pie
banana split
APPLE

Command:
grep -i 'apple' data.txt
Bash Scripting
grep -i 'apple' data.txt
Aapple
B
apple
Apple pie
APPLE
banana
banana split
C
Apple pie
APPLE
D
apple
Apple pie
APPLE
Attempts:
2 left
💡 Hint
The -i option makes grep ignore case when matching.
💻 Command Output
intermediate
2:00remaining
Using grep to count matching lines
Given a file log.txt with 10 lines, 3 of which contain the word 'error', what is the output of:
grep -c 'error' log.txt
Bash Scripting
grep -c 'error' log.txt
A3
B
error
error
error
C10
D0
Attempts:
2 left
💡 Hint
The -c option counts matching lines instead of printing them.
🔧 Debug
advanced
2:00remaining
Why does this grep command fail?
Consider this script snippet:
if grep 'pattern' file.txt
then
echo 'Found'
fi

Why might this script not print 'Found' even if 'pattern' is in the file?
Bash Scripting
if grep 'pattern' file.txt
then
echo 'Found'
fi
Agrep outputs matching lines but the if condition checks exit status, so if grep outputs nothing, it returns false
Bgrep returns 0 exit status if it finds matches, so the if condition should print 'Found' if pattern exists
Cgrep command is missing the -q option to suppress output, causing the if to fail
DThe script is missing a semicolon after grep command, causing syntax error
Attempts:
2 left
💡 Hint
Check how grep exit status works in if conditions.
📝 Syntax
advanced
2:00remaining
Identify the syntax error in this grep usage
Which option shows the correct syntax to search for lines containing 'test' in file.txt and ignore case?
Agrep -i 'test' file.txt
Bgrep -i test file.txt
Cgrep -i "test file.txt"
Dgrep -i test -file.txt
Attempts:
2 left
💡 Hint
Check how to pass the pattern and filename correctly.
🚀 Application
expert
3:00remaining
Extract lines with numbers and save count
You want to write a bash script that extracts all lines containing digits from input.txt and saves them to numbers.txt. Then, you want to store the count of these lines in a variable count. Which snippet does this correctly?
Acount=$(grep -E '[0-9]' input.txt > numbers.txt | wc -l)
B
grep -E '[0-9]' input.txt > numbers.txt
count=$(wc -l < numbers.txt)
Ccount=$(grep -E '[0-9]' input.txt | tee numbers.txt | wc -l)
D
grep -E '[0-9]' input.txt | wc -l > numbers.txt
count=$(cat numbers.txt)
Attempts:
2 left
💡 Hint
Use a command that both saves output and counts lines in a single pipeline.

Practice

(1/5)
1. What does the grep command do in a bash script?
easy
A. Searches for lines matching a pattern in files or input
B. Deletes files matching a pattern
C. Creates new files with matching names
D. Changes file permissions based on a pattern

Solution

  1. Step 1: Understand grep's purpose

    The grep command is used to search text for lines that match a given pattern.
  2. Step 2: Compare options

    Options B, C, and D describe actions unrelated to searching text, so they are incorrect.
  3. Final Answer:

    Searches for lines matching a pattern in files or input -> Option A
  4. Quick Check:

    grep = search text lines [OK]
Hint: grep finds text patterns in files or input quickly [OK]
Common Mistakes:
  • Thinking grep deletes or modifies files
  • Confusing grep with commands like rm or chmod
  • Assuming grep creates files
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 -f error log.txt
B. grep error log.txt
C. grep log.txt error
D. grep -c log.txt error

Solution

  1. Step 1: Identify grep syntax

    The correct syntax is grep [pattern] [file]. So, searching for "error" in "log.txt" is grep error log.txt.
  2. Step 2: Check 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 wrong flags.
  3. Final Answer:

    grep error log.txt -> Option B
  4. Quick Check:

    grep pattern file = correct syntax [OK]
Hint: Remember: grep pattern filename [OK]
Common Mistakes:
  • Swapping pattern and filename order
  • Using -f flag incorrectly
  • Confusing -c flag usage
3. What will be the output of this script snippet?
echo -e "apple\nbanana\nApple" | grep -i apple
medium
A. apple
B. No output
C. apple\nApple
D. Apple

Solution

  1. Step 1: Understand the input

    The input lines are "apple", "banana", and "Apple".
  2. Step 2: Apply grep with -i option

    The -i option makes grep case-insensitive, so it matches both "apple" and "Apple" but not "banana".
  3. Final Answer:

    apple\nApple -> Option C
  4. Quick Check:

    grep -i matches case-insensitive lines [OK]
Hint: Use -i to ignore case when searching [OK]
Common Mistakes:
  • Ignoring case sensitivity of grep
  • Expecting only lowercase matches
  • Assuming grep outputs only one match
4. Identify the error in this script snippet:
if grep "error" logfile.txt
then
  echo "Error found"
fi
medium
A. Missing semicolon or newline before then
B. grep command syntax is wrong
C. echo command should be outside if block
D. fi is missing

Solution

  1. Step 1: Check if statement syntax

    In bash, the if condition must end with a semicolon or newline before then. Here, then is on a new line and the previous line ends properly, so syntax is correct.
  2. Step 2: Confirm other parts

    grep syntax is correct, echo is correctly inside if, and fi is present.
  3. Final Answer:

    No error in the script snippet -> Option A
  4. Quick Check:

    if condition syntax is correct as given [OK]
Hint: Put ; or newline before then in if statements [OK]
Common Mistakes:
  • Writing if and then on same line without semicolon
  • Misplacing fi or echo commands
  • Confusing grep syntax with if syntax
5. You want to count how many lines in data.txt contain the word "success" ignoring case, and store the number in a variable count. Which script snippet correctly does this?
hard
A. count=$(grep -i success -c data.txt)
B. count=$(grep -c success -i data.txt)
C. count=$(grep success -i -c data.txt)
D. count=$(grep -ci success data.txt)

Solution

  1. Step 1: Understand grep options

    The -c option counts matching lines, and -i ignores case. Both can be combined as -ci.
  2. Step 2: Check option order and syntax

    Options A, B, and D have options separated or misplaced. count=$(grep -ci success data.txt) correctly combines -c and -i before the pattern and filename.
  3. Final Answer:

    count=$(grep -ci success data.txt) -> Option D
  4. Quick Check:

    Use combined options -ci for count and ignore case [OK]
Hint: Combine options like -ci for count and ignore case [OK]
Common Mistakes:
  • Separating options incorrectly
  • Placing options after filename
  • Not combining -c and -i properly
Recommended

Ready to prove it?

Pass the test and this pattern moves unknown strong while earning +1 Grip toward your certificate.

10 questions~5 mineasy hard