Bird
Raised Fist0
Linux CLIscripting~10 mins

sed (stream editor) basics in Linux CLI - Step-by-Step Execution

Choose your learning style10 modes available
Concept Flow - sed (stream editor) basics
Start with input text
↓
sed reads line
↓
Apply sed command
↓
Output modified line
↓
Repeat for next line
↓
End of input?
No→sed reads next line
Yes↓
Finish
sed reads input line by line, applies the editing command, outputs the result, and repeats until all lines are processed.
Execution Sample
Linux CLI
echo "apple\nbanana\ncherry" | sed 's/a/A/'
Replace the first 'a' with 'A' on each line of the input text.
Execution Table
StepInput Linesed Command AppliedOutput LineNotes
1apples/a/A/AppleFirst 'a' replaced with 'A'
2bananas/a/A/bAnanaOnly first 'a' replaced
3cherrys/a/A/cherryNo 'a' found, line unchanged
4End of input--sed finishes processing all lines
💡 All input lines processed, sed ends.
Variable Tracker
VariableStartAfter Line 1After Line 2After Line 3Final
Current LineapplebananacherryEndEnd
Output LineApplebAnanacherryAll lines output
Key Moments - 2 Insights
Why does sed only replace the first 'a' on each line, not all?
By default, sed's 's' command replaces only the first match per line, as shown in execution_table rows 1 and 2.
What happens if the pattern is not found in a line?
sed outputs the line unchanged, as seen in execution_table row 3 where 'cherry' has no 'a'.
Visual Quiz - 3 Questions
Test your understanding
Look at the execution table, what is the output line for the second input line?
Abanana
BBanana
CbAnana
DbAnAna
💡 Hint
Check execution_table row 2 under 'Output Line'
At which step does sed finish processing all lines?
AStep 3
BStep 4
CStep 2
DStep 1
💡 Hint
Look at the 'End of input' step in execution_table
If we add the 'g' flag to the sed command (s/a/A/g), how would the output for 'banana' change?
AbAnAnA
BbAnana
Cbanana
DBanana
💡 Hint
The 'g' flag replaces all matches per line, not just the first (see key_moments about default behavior)
Concept Snapshot
sed reads input line by line
Applies editing commands like substitution
's/pattern/replacement/' replaces first match per line
Add 'g' flag to replace all matches
Outputs modified lines in order
Stops after last input line
Full Transcript
sed is a tool that reads text line by line. For each line, it applies a command like substitution. For example, 's/a/A/' changes the first 'a' to 'A' on each line. sed then outputs the changed line. It repeats this until all lines are done. If a line has no match, it stays the same. By default, only the first match per line changes. Adding 'g' after the command makes all matches change. This process helps quickly edit text streams.

Practice

(1/5)
1. What does the sed command sed 's/cat/dog/' file.txt do?
easy
A. Deletes all lines containing 'cat' in file.txt
B. Replaces the first occurrence of 'cat' with 'dog' on each line of file.txt
C. Prints only lines containing 'dog' from file.txt
D. Appends 'dog' at the end of each line containing 'cat' in file.txt

Solution

  1. Step 1: Understand the substitution command

    The s/pattern/replacement/ syntax in sed replaces the first match of 'pattern' with 'replacement' on each line.
  2. Step 2: Apply to the given command

    The command replaces the first occurrence of 'cat' with 'dog' on every line of file.txt.
  3. Final Answer:

    Replaces the first occurrence of 'cat' with 'dog' on each line of file.txt -> Option B
  4. Quick Check:

    sed substitution = replace first match [OK]
Hint: Remember: s/pattern/replacement/ changes first match per line [OK]
Common Mistakes:
  • Thinking it deletes lines instead of substituting
  • Assuming it replaces all occurrences without 'g' flag
  • Confusing printing lines with substitution
2. Which of the following is the correct syntax to delete all lines containing the word 'error' using sed?
easy
A. sed '/error/d' filename
B. sed 'd/error/' filename
C. sed 's/error/d/' filename
D. sed 'delete /error/' filename

Solution

  1. Step 1: Identify the delete command syntax in sed

    To delete lines matching a pattern, the syntax is sed '/pattern/d'.
  2. Step 2: Match the correct option

    sed '/error/d' filename uses sed '/error/d', which deletes lines containing 'error'. Other options have incorrect syntax.
  3. Final Answer:

    sed '/error/d' filename -> Option A
  4. Quick Check:

    Delete lines with pattern = /pattern/d [OK]
Hint: Use '/pattern/d' to delete matching lines in sed [OK]
Common Mistakes:
  • Placing 'd' before the pattern
  • Using substitution syntax instead of delete
  • Writing 'delete' instead of 'd'
3. What is the output of the command echo 'apple banana apple' | sed 's/apple/orange/g'?
medium
A. orange banana orange
B. orange banana apple
C. apple banana apple
D. apple banana orange

Solution

  1. Step 1: Understand the 'g' flag in substitution

    The 'g' flag means replace all occurrences of the pattern on each line, not just the first.
  2. Step 2: Apply substitution to the input string

    All 'apple' words are replaced by 'orange', so 'apple banana apple' becomes 'orange banana orange'.
  3. Final Answer:

    orange banana orange -> Option A
  4. Quick Check:

    Substitute all matches with 'g' flag = replaced all [OK]
Hint: Add 'g' to replace all matches, not just first [OK]
Common Mistakes:
  • Forgetting the 'g' flag replaces only first occurrence
  • Confusing output with original input
  • Misreading the pipe input
4. Identify the error in this sed command: sed 's/hello/goodbye' file.txt
medium
A. No error; command is correct
B. Incorrect command; 's' cannot be used with text files
C. The pattern 'hello' is invalid
D. Missing delimiter after replacement text

Solution

  1. Step 1: Check the substitution syntax

    The substitution command requires delimiters: s/pattern/replacement/. The final '/' is missing here.
  2. Step 2: Identify the missing delimiter

    The command ends with 's/hello/goodbye' missing the closing '/' delimiter after 'goodbye'.
  3. Final Answer:

    Missing delimiter after replacement text -> Option D
  4. Quick Check:

    Substitution needs closing '/' delimiter [OK]
Hint: Check that substitution ends with '/' delimiter [OK]
Common Mistakes:
  • Omitting the last '/' in substitution
  • Assuming 's' can't be used on files
  • Thinking pattern must be a regex error
5. You want to replace the word 'cat' with 'dog' only on lines 2 to 4 in a file named pets.txt. Which sed command achieves this?
hard
A. sed 's/cat/dog/ 2,4' pets.txt
B. sed '/2,4 s/cat/dog/' pets.txt
C. sed '2,4s/cat/dog/' pets.txt
D. sed 's/cat/dog/ 2-4' pets.txt

Solution

  1. Step 1: Understand address range in sed

    To apply a command only on specific lines, use start,endcommand syntax, e.g., 2,4s/pattern/replacement/.
  2. Step 2: Match the correct syntax

    sed '2,4s/cat/dog/' pets.txt correctly uses 2,4s/cat/dog/ to replace 'cat' with 'dog' on lines 2 to 4.
  3. Final Answer:

    sed '2,4s/cat/dog/' pets.txt -> Option C
  4. Quick Check:

    Use line range before command to limit sed action [OK]
Hint: Use 'start,end' before 's' to limit substitution lines [OK]
Common Mistakes:
  • Placing line numbers after substitution command
  • Using incorrect range syntax like '2-4'
  • Adding slashes around line numbers
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