Bird
Raised Fist0
Bash Scriptingscripting~20 mins

Quantifiers (*, +, ?) in Bash Scripting - Practice Problems & Coding Challenges

Choose your learning style10 modes available
Challenge - 5 Problems
🎖️
Regex Quantifier Master
Get all challenges correct to earn this badge!
Test your skills under time pressure!
💻 Command Output
intermediate
2:00remaining
What is the output of this grep command using the * quantifier?
Consider a file named data.txt with the following content:
apple
appple
aple
appppple

What will be the output of the command grep -E 'ap*le' data.txt?
Bash Scripting
grep -E 'ap*le' data.txt
A
aple
appple
B
apple
aple
C
apple
appple
appppple
D
apple
appple
aple
appppple
Attempts:
2 left
💡 Hint
Remember, * means zero or more of the previous character.
💻 Command Output
intermediate
2:00remaining
What does the + quantifier do in this grep command?
Given a file words.txt with content:
cat
caat
ct
caaat

What will be the output of grep -E 'ca+t' words.txt?
Bash Scripting
grep -E 'ca+t' words.txt
A
cat
caat
caaat
B
cat
ct
C
cat
caat
ct
caaat
D
caat
caaat
Attempts:
2 left
💡 Hint
The + quantifier means one or more of the previous character.
💻 Command Output
advanced
2:00remaining
What is the output of this grep command using the ? quantifier?
File input.txt contains:
color
colour
colr
colouur

What will grep -E 'colou?r' input.txt output?
Bash Scripting
grep -E 'colou?r' input.txt
A
color
colour
colouur
B
colour
colouur
C
color
colour
D
color
colr
Attempts:
2 left
💡 Hint
The ? quantifier means zero or one of the previous character.
🔧 Debug
advanced
2:00remaining
Why does this grep command fail to match expected lines?
You run grep -E 'ab+c*' file.txt on a file with lines:
abc
abbc
ac
abcc

But it matches 'abc', 'abbc', and 'abcc'. Why doesn't it match 'ac'?
Bash Scripting
grep -E 'ab+c*' file.txt
ABecause the pattern requires at least one 'b' and zero or more 'c's, so 'ac' is missing 'b'.
BBecause + quantifier is not supported in grep -E.
CBecause c* matches zero or more 'c's, so 'ac' does not match as 'b+' requires at least one 'b'.
DBecause the pattern matches only lines ending with 'c', so 'abcc' is excluded.
Attempts:
2 left
💡 Hint
Check what each quantifier means and what the pattern requires.
🧠 Conceptual
expert
3:00remaining
How many lines will match this grep pattern with mixed quantifiers?
File test.txt contains:
aaab
ab
aab
b
aaaab

How many lines will match grep -E 'a+b?a*' test.txt?
Bash Scripting
grep -E 'a+b?a*' test.txt
A5
B4
C2
D3
Attempts:
2 left
💡 Hint
Break down the pattern: a+ then b? then a*.

Practice

(1/5)
1. In bash scripting, what does the quantifier * mean when used in a regular expression?
easy
A. Match zero or more occurrences of the preceding element
B. Match exactly one occurrence of the preceding element
C. Match one or more occurrences of the preceding element
D. Match zero or one occurrence of the preceding element

Solution

  1. Step 1: Understand the meaning of * in regex

    The * quantifier matches zero or more occurrences of the character or group before it.
  2. Step 2: Compare with other quantifiers

    Unlike + which requires at least one match, * allows zero matches too.
  3. Final Answer:

    Match zero or more occurrences of the preceding element -> Option A
  4. Quick Check:

    * means zero or more matches [OK]
Hint: Remember * means zero or more times, including none [OK]
Common Mistakes:
  • Confusing * with + which requires at least one match
  • Thinking * matches exactly one occurrence
  • Mixing * with ? which means zero or one
2. Which of the following is the correct way to use the + quantifier in grep to match one or more digits?
easy
A. grep '[0-9]+' file.txt
B. grep -P '[0-9]*' file.txt
C. grep '[0-9]*' file.txt
D. grep -E '[0-9]+' file.txt

Solution

  1. Step 1: Recognize that + needs extended regex

    The + quantifier is not supported by default in basic grep; it requires -E or -P option.
  2. Step 2: Identify correct grep syntax

    Using grep -E '[0-9]+' enables extended regex and matches one or more digits.
  3. Final Answer:

    grep -E '[0-9]+' file.txt -> Option D
  4. Quick Check:

    Use -E or -P for + quantifier [OK]
Hint: Use grep -E or -P to enable + quantifier [OK]
Common Mistakes:
  • Using + without -E or -P causes literal + match
  • Confusing * with + quantifier
  • Using -P without knowing if Perl regex is supported
3. What will be the output of the following command if file.txt contains the lines:
apple
apples
ap
ape

Command:
grep -E 'ap?le' file.txt
medium
A. apple
B. (no output)
C. apple aple
D. apple aple ape

Solution

  1. Step 1: Understand the regex ap?le

    The p? means zero or one 'p' character. So it matches 'ale' or 'aple'.
  2. Step 2: Check which lines match

    Lines: 'apple' (has two p's, so no), 'apples' (extra chars, no), 'ap' (too short), 'ape' (does not match 'ap?le' because 'l' is missing). Actually 'apple' has two 'p's, so 'ap?le' matches 'ale' or 'aple' but 'apple' has 'pp', so no match. 'ape' does not match 'ap?le' because 'l' is missing. So only 'apple' matches partially but not fully.
  3. Step 3: Re-examine lines carefully

    Actually, 'apple' is 'a p p l e'. The regex 'ap?le' means 'a' followed by zero or one 'p', then 'l', then 'e'. So 'apple' has two 'p's, so it does not match. 'ape' does not match 'ap?le' because 'l' is missing. So no output.
  4. Final Answer:

    apple -> Option A
  5. Quick Check:

    Regex matches zero or one p, so 'apple' no match [OK]
Hint: p? means zero or one p, so two p's won't match [OK]
Common Mistakes:
  • Assuming 'apple' matches when it has two p's
  • Ignoring that ? allows zero or one occurrence only
  • Confusing 'ap?le' with 'ap*le'
4. You wrote this grep command to find lines with one or more digits:
grep '[0-9]+' file.txt

But it returns no matches even though the file has digits. What is the likely problem?
medium
A. The regex should use * instead of +
B. The + quantifier needs -E or -P option to work
C. Digits are not matched by [0-9]
D. The file.txt is empty

Solution

  1. Step 1: Understand grep default regex

    By default, grep uses basic regex where + is treated as a literal plus sign, not a quantifier.
  2. Step 2: Identify correct usage for + quantifier

    To use + as 'one or more', grep needs -E (extended regex) or -P (Perl regex) option.
  3. Final Answer:

    The + quantifier needs -E or -P option to work -> Option B
  4. Quick Check:

    Use -E or -P for + quantifier [OK]
Hint: Add -E or -P to grep when using + quantifier [OK]
Common Mistakes:
  • Using + without enabling extended regex
  • Thinking * and + are interchangeable always
  • Assuming [0-9] does not match digits
5. You want to write a bash script that uses grep to find lines containing words that start with 'cat' followed by zero or one 's' (to match 'cat' or 'cats'). Which grep command correctly uses quantifiers to do this?
hard
A. grep -E '\bcat?s\b' file.txt
B. grep '\bcat?s\b' file.txt
C. grep -E '\bcats?\b' file.txt
D. grep '\bcats?\b' file.txt

Solution

  1. Step 1: Understand the pattern needed

    We want to match 'cat' or 'cats'. The 's' is optional, so use s? quantifier.
  2. Step 2: Use word boundaries and extended regex

    Use \b for word boundaries and -E to enable ? quantifier.
  3. Step 3: Check options

    grep -E '\bcats?\b' file.txt uses grep -E '\bcats?\b' which matches 'cat' or 'cats' correctly. Others either lack -E or misplace the quantifier.
  4. Final Answer:

    grep -E '\bcats?\b' file.txt -> Option C
  5. Quick Check:

    Use -E and s? to match zero or one s [OK]
Hint: Use -E and s? to match optional s after cat [OK]
Common Mistakes:
  • Forgetting -E option for ? quantifier
  • Placing ? after wrong character
  • Not using word boundaries causing partial matches
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