Bird
Raised Fist0
Bash Scriptingscripting~5 mins

Extended regex (grep -E) in Bash Scripting - Cheat Sheet & Quick Revision

Choose your learning style10 modes available
Recall & Review
beginner
What does the -E option do in the grep command?
The -E option tells grep to use extended regular expressions, allowing more powerful pattern matching like +, ?, | without escaping.
Click to reveal answer
beginner
Which symbol in extended regex means 'one or more' of the previous character or group?
The + symbol means 'one or more' of the previous character or group in extended regex.
Click to reveal answer
beginner
How do you search for lines containing either 'cat' or 'dog' using grep -E?
Use the pattern cat|dog with grep -E. For example: grep -E 'cat|dog' filename finds lines with 'cat' or 'dog'.
Click to reveal answer
intermediate
What is the difference between grep and grep -E?
grep uses basic regular expressions where some symbols like +, ?, | need escaping. grep -E uses extended regex where these symbols work directly.
Click to reveal answer
intermediate
Write a grep -E command to find lines with a digit repeated 3 times in a row.
Use the pattern [0-9]{3} with grep -E. Example: grep -E '[0-9]{3}' filename finds lines with three digits in a row.
Click to reveal answer
What does the pattern a+b match in grep -E?
AZero or more 'a' followed by 'b'
BThe characters 'a', '+', and 'b' literally
CExactly one 'a' followed by 'b'
DOne or more 'a' followed by 'b'
Which command uses extended regex to find lines with 'cat' or 'dog'?
Agrep 'cat|dog' filename
Bgrep -E 'cat|dog' filename
Cgrep -e 'cat|dog' filename
Dgrep -F 'cat|dog' filename
In grep -E, what does ? mean?
AExactly one of the previous character
BOne or more of the previous character
CZero or one of the previous character
DMatches a question mark literally
How do you match exactly 4 digits in a row using grep -E?
A<code>[0-9]{4}</code>
B<code>[0-9]+4</code>
C<code>[0-9]{,4}</code>
D<code>[0-9]{4,}</code>
Which of these is NOT a feature of extended regex in grep -E?
AUsing '\d' for digit shorthand
BUsing '|' for OR
CUsing '+' for one or more
DUsing '?' for zero or one
Explain how to use grep -E to search for multiple patterns with OR logic.
Think about how extended regex lets you use | without escaping.
You got /4 concepts.
    Describe the main quantifiers available in extended regex and how they change pattern matching.
    Quantifiers control how many times a character or group repeats.
    You got /6 concepts.

      Practice

      (1/5)
      1. What does the grep -E command do in bash scripting?
      easy
      A. Runs grep with extra debugging information
      B. Enables extended regular expressions for more powerful pattern matching
      C. Executes grep in encrypted mode
      D. Searches only for exact string matches without regex

      Solution

      1. Step 1: Understand grep basic function

        grep searches text for patterns. By default, it uses basic regex.
      2. Step 2: Role of -E option

        The -E option enables extended regex, allowing special characters like +, ?, | without backslashes.
      3. Final Answer:

        Enables extended regular expressions for more powerful pattern matching -> Option B
      4. Quick Check:

        grep -E = extended regex enabled [OK]
      Hint: Remember: -E means extended regex, more pattern power [OK]
      Common Mistakes:
      • Confusing -E with debugging or encryption
      • Thinking -E disables regex
      • Assuming -E is for exact string match only
      2. Which of the following is the correct syntax to search for lines containing either "cat" or "dog" using grep -E?
      easy
      A. grep -E 'cat|dog' filename
      B. grep -E 'cat&dog' filename
      C. grep -E 'cat?dog' filename
      D. grep -E 'cat+dog' filename

      Solution

      1. Step 1: Understand the OR operator in extended regex

        The vertical bar | means OR, matching either pattern on left or right.
      2. Step 2: Check each option's pattern

        'cat|dog' matches lines with 'cat' or 'dog'. Others (&, ?, +) do not mean OR.
      3. Final Answer:

        grep -E 'cat|dog' filename -> Option A
      4. Quick Check:

        Use | for OR in grep -E [OK]
      Hint: Use | inside quotes for OR patterns with grep -E [OK]
      Common Mistakes:
      • Using & instead of | for OR
      • Confusing ? or + as OR
      • Not quoting the pattern
      3. Given a file data.txt with the following lines:
      apple
      apples
      applepie
      appl
      apply

      What is the output of grep -E 'apple(s|pie)?' data.txt?
      medium
      A. applepie
      B. apple apples applepie appl apply
      C. apples applepie
      D. apple apples applepie

      Solution

      1. Step 1: Understand the regex pattern 'apple(s|pie)?'

        This matches 'apple' followed optionally by either 's' or 'pie'. So it matches 'apple', 'apples', or 'applepie'.
      2. Step 2: Check each line against the pattern

        'apple' matches exactly.
        'apples' matches 'apple' + 's'.
        'applepie' matches 'apple' + 'pie'.
        'appl' and 'apply' do not match because they lack the full 'apple' base.
      3. Final Answer:

        apple apples applepie -> Option D
      4. Quick Check:

        Optional group (s|pie)? matches these three lines [OK]
      Hint: Remember ? means optional, (a|b) means either a or b [OK]
      Common Mistakes:
      • Assuming partial matches like 'appl' count
      • Ignoring the optional group ?
      • Confusing | with + or ?
      4. You run the command grep -E colou?r file.txt but it returns no matches, even though the file contains the word "color". What is the likely problem?
      medium
      A. The pattern is missing the optional character syntax
      B. The file does not contain the word "color"
      C. The regex should be quoted to prevent shell expansion
      D. The pattern is correct but the file encoding is wrong

      Solution

      1. Step 1: Check the pattern and shell quoting

        The pattern 'colou?r' uses ? to make 'u' optional, matching 'color' or 'colour'.
      2. Step 2: Identify quoting issue

        If the pattern is not quoted, the shell may interpret ?, causing grep to receive a wrong pattern and no matches.
      3. Final Answer:

        The regex should be quoted to prevent shell expansion -> Option C
      4. Quick Check:

        Always quote regex patterns to avoid shell issues [OK]
      Hint: Always quote regex patterns to avoid shell interpreting special chars [OK]
      Common Mistakes:
      • Not quoting regex patterns
      • Assuming file lacks the word
      • Blaming file encoding without checking
      5. You want to find lines in log.txt that contain either "error", "fail", or "warning" using grep -E. Which command correctly matches these words as whole words only?
      hard
      A. grep -E '\b(error|fail|warning)\b' log.txt
      B. grep -E '(error|fail|warning)' log.txt
      C. grep -E '\<(error|fail|warning)\>' log.txt
      D. grep -E '[error|fail|warning]' log.txt

      Solution

      1. Step 1: Understand word boundaries in extended regex

        \b marks word boundaries, ensuring the pattern matches whole words only.
      2. Step 2: Analyze each option

        grep -E '\b(error|fail|warning)\b' log.txt uses \b around the group, correctly matching whole words.
        grep -E '(error|fail|warning)' log.txt matches substrings inside words.
        grep -E '\<(error|fail|warning)\>' log.txt uses \< and \> which are not standard in grep -E.
        grep -E '[error|fail|warning]' log.txt uses character class [] incorrectly, matching any single character from the set.
      3. Final Answer:

        grep -E '\b(error|fail|warning)\b' log.txt -> Option A
      4. Quick Check:

        Use \b for whole word matching in grep -E [OK]
      Hint: Use \b to match whole words in grep -E patterns [OK]
      Common Mistakes:
      • Using character classes [] instead of grouping ()
      • Not using word boundaries \b
      • Using non-standard boundary markers like \< or \>
      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