Bird
Raised Fist0
Bash Scriptingscripting~5 mins

Anchors (^, $) in Bash Scripting - Cheat Sheet & Quick Revision

Choose your learning style10 modes available
Recall & Review
beginner
What does the caret (^) anchor mean in a regular expression?
The caret (^) anchor means the pattern must match at the start of a line or string.
Click to reveal answer
beginner
What does the dollar sign ($) anchor mean in a regular expression?
The dollar sign ($) anchor means the pattern must match at the end of a line or string.
Click to reveal answer
beginner
In bash scripting, how would you use ^ and $ to match a line that exactly contains 'hello'?
Use the pattern '^hello$' to match lines that contain only 'hello' with nothing before or after.
Click to reveal answer
intermediate
Why are anchors useful in scripting when searching text?
Anchors help ensure you match text only at the start or end of lines, avoiding partial matches inside lines.
Click to reveal answer
beginner
What happens if you omit anchors in a regex pattern in bash?
Without anchors, the pattern can match anywhere in the line, which may lead to unexpected matches.
Click to reveal answer
What does the regex pattern '^abc' match?
ALines ending with 'abc'
BLines starting with 'abc'
CLines containing 'abc' anywhere
DLines exactly equal to 'abc'
What does the regex pattern 'xyz$' match?
ALines exactly equal to 'xyz'
BLines starting with 'xyz'
CLines containing 'xyz' anywhere
DLines ending with 'xyz'
Which pattern matches a line that contains only 'test' and nothing else?
A^test$
Btest
C^test
Dtest$
If you want to find lines that contain 'data' anywhere, which pattern should you use?
Adata
B^data
C^data$
Ddata$
What is the effect of using anchors in a grep command?
AMakes grep run faster
BIgnores case sensitivity
CLimits matches to start or end of lines
DMatches multiple lines at once
Explain how the ^ and $ anchors work in regular expressions and why they are useful in bash scripting.
Think about matching only at the start or end of a line.
You got /4 concepts.
    Describe a real-life example where using ^ and $ anchors in a bash script would help you find exactly what you want.
    Imagine searching a list for an exact name, not just part of it.
    You got /4 concepts.

      Practice

      (1/5)
      1. What does the anchor ^ represent in a bash regular expression?
      easy
      A. It matches the end of a line.
      B. It matches any digit.
      C. It matches any whitespace character.
      D. It matches the start of a line.

      Solution

      1. Step 1: Understand the role of anchors in regex

        Anchors are special characters that match positions in text, not actual characters.
      2. Step 2: Identify the meaning of ^

        The ^ anchor matches the start of a line in bash regex.
      3. Final Answer:

        It matches the start of a line. -> Option D
      4. Quick Check:

        ^ means start of line [OK]
      Hint: Remember ^ means start, $ means end of line [OK]
      Common Mistakes:
      • Confusing ^ with end of line anchor
      • Thinking ^ matches a character instead of position
      • Mixing ^ with other regex symbols like * or .
      2. Which of the following grep commands correctly finds lines that end with the word done?
      easy
      A. grep 'done$' file.txt
      B. grep '^done' file.txt
      C. grep 'done^' file.txt
      D. grep '^done$' file.txt

      Solution

      1. Step 1: Understand the meaning of $ anchor

        The $ anchor matches the end of a line in regex.
      2. Step 2: Match lines ending with 'done'

        Using done$ matches lines where 'done' is at the end.
      3. Final Answer:

        grep 'done$' file.txt -> Option A
      4. Quick Check:

        Use $ to match line end [OK]
      Hint: Use $ after text to match line endings [OK]
      Common Mistakes:
      • Using ^ after text instead of $
      • Using ^done to match line end
      • Confusing ^ and $ anchors
      3. What will be the output of this command if file.txt contains the lines:
      apple
      banana
      apple pie
      pineapple
      apple
      

      grep '^apple$' file.txt
      medium
      A. apple apple pie apple
      B. apple pie pineapple
      C. apple apple
      D. banana

      Solution

      1. Step 1: Understand the regex ^apple$

        This matches lines that start and end exactly with 'apple' and nothing else.
      2. Step 2: Check each line in file.txt

        Lines 'apple' and 'apple' match exactly. 'apple pie' and 'pineapple' do not match because of extra text.
      3. Final Answer:

        apple apple -> Option C
      4. Quick Check:

        ^ and $ match exact whole line [OK]
      Hint: Use ^ and $ together to match whole exact lines [OK]
      Common Mistakes:
      • Assuming partial matches with anchors
      • Ignoring that $ matches end of line
      • Confusing lines with extra words as matches
      4. You wrote this command to find lines starting with 'Error' in a log file:
      grep 'Error^' logfile.txt
      But it returns no results. What is the problem?
      medium
      A. The file does not contain 'Error'.
      B. The anchor ^ should be at the start, not after 'Error'.
      C. grep does not support anchors like ^.
      D. The command needs double quotes instead of single quotes.

      Solution

      1. Step 1: Analyze the position of the anchor ^

        The ^ anchor must be at the start of the pattern to match line start.
      2. Step 2: Correct the pattern placement

        Use ^Error to match lines starting with 'Error'. Placing ^ after 'Error' is invalid.
      3. Final Answer:

        The anchor ^ should be at the start, not after 'Error'. -> Option B
      4. Quick Check:

        ^ must be at pattern start [OK]
      Hint: Place ^ only at pattern start to match line start [OK]
      Common Mistakes:
      • Putting ^ after text instead of before
      • Assuming grep ignores anchors
      • Using wrong quotes causing shell issues
      5. You want to extract lines from data.txt that start with a digit and end with a period. Which grep pattern correctly uses anchors to do this?
      hard
      A. grep '^[0-9].*\.$' data.txt
      B. grep '^[0-9].*$' data.txt
      C. grep '^\d.*\.$' data.txt
      D. grep '^[0-9].*.$' data.txt

      Solution

      1. Step 1: Match line start with a digit

        The pattern ^[0-9] matches lines starting with any digit.
      2. Step 2: Match line end with a literal period

        Use \.$ to match a literal '.' at the end. The dot must be escaped to avoid matching any character.
      3. Step 3: Combine pattern correctly

        ^[0-9].*\.$ matches lines starting with digit, any characters, ending with a period.
      4. Final Answer:

        grep '^[0-9].*\.$' data.txt -> Option A
      5. Quick Check:

        ^ start, $ end, escape . for literal dot [OK]
      Hint: Escape dot to match literal period at line end [OK]
      Common Mistakes:
      • Not escaping dot, matching any char instead of period
      • Using \d which grep may not support by default
      • Missing $ anchor at line end
      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