Skip to main content
Stream Editor (sed) is a powerful command-line utility for transforming text in a pipeline. In this guide, we’ll explore how to delete lines from input files using the d command, covering non-destructive edits, specific-line removals, range deletions, and in-place updates.

Table of Contents

  1. Overview of the d Command
  2. Non-Destructive Deletion
  3. Deleting a Specific Line
  4. Deleting a Range of Lines
  5. In-Place Deletion with -i
  6. Quick Reference
  7. Links & References

Overview of the d Command

The simplest way to remove lines in sed is with the delete script d:
sed 'd' employees.txt
This command reads every line and deletes it, producing no output. Under the hood, sed follows this syntax:
sed [OPTIONS] SCRIPT [INPUT-FILE...]
  • SCRIPT: A quoted set of editing commands (here, 'd').
  • INPUT-FILE: One or more files to process (defaults to standard input).
Wrap your script in single quotes (e.g., 'd') so the shell interprets it literally.

Non-Destructive Deletion

By default, sed writes the transformed text to standard output and leaves the original file unchanged. To delete line 2 from employees.txt:
sed '2d' employees.txt
Output:
1|Kriti|Shreshtha|Finance|Financial Analyst|[email protected]|60000
3|Debbie|Miller|IT|Software Developer|[email protected]|80000
4|Enrique|Rivera|Marketing|Marketing Specialist|[email protected]|65000
5|Feng|Lin|Sales|Sales Manager|[email protected]|90000
6|Andy|Luscomb|IT|IT Manager|[email protected]|95000
7|Mark|Crocker|HR|HR Manager|[email protected]|85000
8|Jing|Ma|Engineering|Engineering Manager|[email protected]|100000
Your source file remains intact:
cat employees.txt

Deleting a Specific Line

To drop only the sixth line:
sed '6d' employees.txt
This command filters out line 6 from the output stream, leaving all others.

Deleting a Range of Lines

Use a comma-separated address pair to remove a block of lines:
sed '3,5d' employees.txt
This deletes lines 3 through 5.
Address ranges must ascend (e.g., 3,5d). Specifying 5,3d is invalid and will have no effect.

In-Place Deletion with -i

To modify the file directly, add the -i (in-place) option:
# Inspect original
cat employees.txt

# Delete lines 2 through 7 and save changes
sed -i '2,7d' employees.txt

# Verify result
cat employees.txt
Resulting file:
1|Kriti|Shreshtha|Finance|Financial Analyst|[email protected]|60000
8|Jing|Ma|Engineering|Engineering Manager|[email protected]|100000
On macOS, sed -i requires a zero-length extension: sed -i '' '2,7d' file.txt. Always back up critical data before in-place edits.

Quick Reference

Command SyntaxEffectExample
sed 'd'Delete all linessed 'd' employees.txt
sed 'Nd'Delete Nth linesed '6d' employees.txt
sed 'M,Nd'Delete line rangesed '3,5d' employees.txt
sed -i 'M,Nd'In-place deletionsed -i '2,7d' employees.txt

By mastering these delete operations, you can efficiently cleanse, filter, or reorganize textual data in scripts and pipelines. Happy editing!