Bird
Raised Fist0
Linux CLIscripting~5 mins

sed (stream editor) basics in Linux CLI - Commands & Configuration

Choose your learning style10 modes available
Introduction
Sometimes you need to quickly change text inside files or streams without opening an editor. sed helps you do this by reading text line by line and applying simple rules to change it automatically.
When you want to replace a word in a file without opening a text editor.
When you need to delete specific lines from a file based on a pattern.
When you want to print only certain lines from a file that match a condition.
When you want to quickly transform text output from another command.
When you want to save time by automating simple text edits in scripts.
Commands
This command replaces the word 'world' with 'sed' in the text 'Hello world'. It shows how sed can change text in a stream.
Terminal
echo "Hello world" | sed 's/world/sed/'
Expected OutputExpected
Hello sed
This command replaces the first occurrence of 'apple' with 'orange' on each line of the file fruits.txt and prints the result to the screen.
Terminal
sed 's/apple/orange/' fruits.txt
Expected OutputExpected
orange pie orange juice orange tart
This command does the same replacement as before but changes the file fruits.txt directly (in-place).
Terminal
sed -i 's/apple/orange/' fruits.txt
Expected OutputExpected
No output (command runs silently)
→
-i - Edit the file in-place instead of printing to screen
This command deletes all lines starting with '#' from config.txt and prints the result. Useful to remove comments.
Terminal
sed '/^#/d' config.txt
Expected OutputExpected
port=8080 host=localhost mode=production
This command prints only lines 2 to 4 from data.txt. The -n flag tells sed not to print anything else.
Terminal
sed -n '2,4p' data.txt
Expected OutputExpected
line 2 content line 3 content line 4 content
→
-n - Suppress automatic printing of all lines
Key Concept

If you remember nothing else from sed, remember: it reads text line by line and applies simple rules to change or select text automatically.

Common Mistakes
Using sed without the -i flag when you want to change the file permanently.
Without -i, sed only prints the changed text but does not save it to the file.
Add the -i flag to edit the file directly if you want permanent changes.
Forgetting to escape special characters like '/' in the sed pattern.
sed uses '/' as a delimiter, so unescaped '/' in patterns cause errors.
Escape '/' with a backslash '\/' or use a different delimiter like 's#old#new#'.
Not using -n when you only want to print specific lines.
sed prints all lines by default, so without -n you get extra unwanted output.
Use -n to suppress automatic printing and then use p command to print desired lines.
Summary
sed can replace text in streams or files using simple substitution commands.
Use the -i flag to save changes directly to files.
You can delete or print specific lines using patterns and line ranges.

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