Bird
Raised Fist0
Bash Scriptingscripting~10 mins

Character classes ([a-z], [0-9]) in Bash Scripting - Interactive Code Practice

Choose your learning style10 modes available
Practice - 5 Tasks
Answer the questions below
1fill in blank
easy

Complete the code to match all lowercase letters in the string.

Bash Scripting
echo "abc123" | grep -o '[[1]]'
Drag options to blanks, or click blank then click option'
AA-Z
Ba-z
C0-9
DA-Za-z
Attempts:
3 left
💡 Hint
Common Mistakes
Using uppercase letters range [A-Z] instead of lowercase.
Using digits range [0-9] which matches numbers, not letters.
2fill in blank
medium

Complete the code to match all digits in the string.

Bash Scripting
echo "abc123" | grep -o '[[1]]'
Drag options to blanks, or click blank then click option'
A0-9
Ba-z
CA-Z
Da-zA-Z
Attempts:
3 left
💡 Hint
Common Mistakes
Using letter ranges like [a-z] instead of digits.
Using uppercase letter ranges [A-Z] which do not match digits.
3fill in blank
hard

Fix the error in the code to match lowercase letters only.

Bash Scripting
echo "Hello123" | grep -o '[[1]]'
Drag options to blanks, or click blank then click option'
AA-Z
BA-Za-z
Ca-z
D0-9
Attempts:
3 left
💡 Hint
Common Mistakes
Using uppercase letters range [A-Z] which matches uppercase letters.
Using combined ranges like [A-Za-z] which matches both cases.
4fill in blank
hard

Fill both blanks to match lowercase letters and digits separately.

Bash Scripting
echo "a1b2c3" | grep -o '[[1]]' | sort | uniq && echo "a1b2c3" | grep -o '[[2]]' | sort | uniq
Drag options to blanks, or click blank then click option'
Aa-z
B0-9
CA-Z
Da-zA-Z
Attempts:
3 left
💡 Hint
Common Mistakes
Mixing uppercase letters in the ranges.
Using the same range for both blanks.
5fill in blank
hard

Fill all three blanks to create a grep pattern matching lowercase letters, digits, and uppercase letters.

Bash Scripting
echo "aA1bB2cC3" | grep -o '[[1][2][3]]'
Drag options to blanks, or click blank then click option'
Aa-z
B0-9
CA-Z
D_
Attempts:
3 left
💡 Hint
Common Mistakes
Using underscores or other characters that do not match letters or digits.
Separating ranges into multiple character classes instead of combining.

Practice

(1/5)
1. What does the character class [a-z] match in bash scripting?
easy
A. All lowercase letters from a to z
B. All uppercase letters from A to Z
C. All digits from 0 to 9
D. All special characters

Solution

  1. Step 1: Understand character class notation

    The notation [a-z] means any character from 'a' to 'z' in lowercase.
  2. Step 2: Identify what [a-z] matches

    This matches all lowercase letters, not uppercase letters, digits, or special characters.
  3. Final Answer:

    All lowercase letters from a to z -> Option A
  4. Quick Check:

    [a-z] = lowercase letters [OK]
Hint: Remember: a-z means lowercase letters only [OK]
Common Mistakes:
  • Confusing lowercase with uppercase letters
  • Thinking it matches digits
  • Assuming it matches special characters
2. Which of the following is the correct syntax to match any digit using a character class in bash?
easy
A. [9-0]
B. [a-z]
C. [A-Z]
D. [0-9]

Solution

  1. Step 1: Identify digit matching syntax

    The character class [0-9] matches any digit from 0 to 9.
  2. Step 2: Check other options

    [a-z] matches lowercase letters, [A-Z] matches uppercase letters, and [9-0] is invalid because ranges must go from lower to higher.
  3. Final Answer:

    [0-9] -> Option D
  4. Quick Check:

    [0-9] = digits [OK]
Hint: Digits always use [0-9], not reversed ranges [OK]
Common Mistakes:
  • Using reversed ranges like [9-0]
  • Confusing letters with digits
  • Using uppercase letter ranges for digits
3. What will be the output of this command?
echo -e "a1 b2 c3" | grep -o '[a-z][0-9]'
medium
A. a1 b2 c3
B. a1 b2 c3
C. a b c
D. 1 2 3

Solution

  1. Step 1: Understand the grep command with -o and pattern

    The pattern [a-z][0-9] matches a lowercase letter followed by a digit. The -o option prints each match on a new line.
  2. Step 2: Apply pattern to input string

    Input "a1 b2 c3" contains matches: "a1", "b2", and "c3". Each will be printed on its own line.
  3. Final Answer:

    a1 b2 c3 -> Option B
  4. Quick Check:

    Pattern matches pairs, -o prints each on new line [OK]
Hint: Use -o to print each match on a separate line [OK]
Common Mistakes:
  • Expecting all matches on one line
  • Matching letters or digits alone
  • Ignoring the -o option effect
4. Identify the error in this grep command:
grep '[a-z-9]' file.txt
medium
A. Should use double brackets [[ ]] instead of single brackets
B. Missing quotes around the pattern
C. The character class is invalid because of the dash placement
D. No error, command is correct

Solution

  1. Step 1: Analyze the character class syntax

    The pattern [a-z-9] is intended to match letters and digits, but the dash is misplaced between 'z' and '9'.
  2. Step 2: Understand dash usage in character classes

    Dash (-) defines a range if placed between two characters. Here, 'z-9' is invalid because 'z' comes after '9' in ASCII order. Dash should be first or last to be literal.
  3. Final Answer:

    The character class is invalid because of the dash placement -> Option C
  4. Quick Check:

    Dash in ranges must go from lower to higher [OK]
Hint: Put dash at start or end to avoid range errors [OK]
Common Mistakes:
  • Placing dash between characters in wrong order
  • Confusing quotes usage
  • Using wrong bracket types
5. You want to extract all words from a file that contain only lowercase letters and digits. Which grep pattern correctly matches such words?
grep -E '\b[?]+\b' file.txt

Choose the correct pattern to replace ?.
hard
A. [a-z0-9]+
B. [a-z]+[0-9]+
C. [a-z][0-9]
D. [0-9a-z]{2,}

Solution

  1. Step 1: Understand the requirement for matching words

    We want words with only lowercase letters and digits, any order, any length (at least one character).
  2. Step 2: Analyze each pattern

    [a-z0-9]+ matches one or more lowercase letters or digits in any order.
    [a-z]+[0-9]+ requires letters followed by digits only.
    [a-z][0-9] matches exactly two characters: one letter then one digit.
    [0-9a-z]{2,} matches two or more letters/digits but order is not enforced; this is valid but less clear than [a-z0-9]+.
  3. Final Answer:

    [a-z0-9]+ -> Option A
  4. Quick Check:

    Character class with + matches any length words [OK]
Hint: Use [a-z0-9]+ to match letters and digits in any order [OK]
Common Mistakes:
  • Forcing letters then digits order
  • Matching only two characters
  • Ignoring word boundaries
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