Bird
Raised Fist0
Linux CLIscripting~3 mins

Why sed (stream editor) basics in Linux CLI? - Purpose & Use Cases

Choose your learning style10 modes available
The Big Idea

What if you could fix hundreds of text mistakes with just one simple command?

The Scenario

Imagine you have a long list of names in a text file, and you need to change every instance of "John" to "Jonathan". Doing this by opening the file and editing each name manually would take forever, especially if the file has hundreds or thousands of lines.

The Problem

Manually searching and replacing text is slow and tiring. You might miss some names or make mistakes. If you need to do this often or on many files, it becomes a huge headache. Plus, it's hard to keep track of what you changed.

The Solution

Using sed, a stream editor, you can quickly and safely replace text across many lines or files with a simple command. It automates the process, making it fast, accurate, and repeatable without opening the file in an editor.

Before vs After
✗ Before
Open file, find 'John', replace with 'Jonathan', save, repeat for each occurrence
✓ After
sed 's/John/Jonathan/g' input.txt > output.txt
What It Enables

sed lets you automate text changes instantly, saving time and avoiding errors in repetitive editing tasks.

Real Life Example

System admins use sed to update configuration files across many servers, changing IP addresses or settings without opening each file manually.

Key Takeaways

Manual text editing is slow and error-prone.

sed automates text replacement efficiently.

This saves time and ensures consistent changes.

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