___________ __________ _____ ________ ________ .____ ___________ \_ _____/ \______ \ / _ \ / _____/ / _____/ | | \_ _____/ | __) | _/ / /_\ \ / \ ___ / \ ___ | | | __)_ | \ | | \ / | \ \ \_\ \ \ \_\ \ | |___ | \ \___ / |____|_ / \____|__ / \______ / \______ / |_______ \ /_______ / \/ \/ \/ \/ \/ \/ \/

sed Cheatsheet

← Back to cheatsheets

← Home


sed (stream editor) is a powerful text processing tool for filtering and transforming text. Edit files non-interactively, perform find-and-replace operations, and manipulate text streams efficiently.


Basic Usage

  • sed 's/old/new/' file - Substitute first occurrence per line
  • sed 's/old/new/g' file - Substitute all occurrences
  • sed 's/old/new/2' file - Substitute 2nd occurrence
  • sed -i 's/old/new/g' file - Edit file in-place
  • sed -i.bak 's/old/new/g' file - In-place with backup

Substitution

  • sed 's/pattern/replacement/' - Basic substitution
  • sed 's/pattern/replacement/g' - Global substitution
  • sed 's/pattern/replacement/i' - Case-insensitive
  • sed 's/pattern/replacement/gi' - Global, case-insensitive
  • sed 's|old|new|g' - Use different delimiter
  • sed 's/old/new/; s/old2/new2/' - Multiple substitutions

Line Selection

  • sed -n '5p' file - Print line 5
  • sed -n '5,10p' file - Print lines 5-10
  • sed -n '5,$p' file - Print from line 5 to end
  • sed -n '/pattern/p' file - Print matching lines
  • sed -n '/start/,/end/p' file - Print range between patterns
  • sed '5d' file - Delete line 5
  • sed '/pattern/d' file - Delete matching lines

Insertion & Appending

  • sed '5i\new line' file - Insert before line 5
  • sed '5a\new line' file - Append after line 5
  • sed '/pattern/i\new line' file - Insert before match
  • sed '/pattern/a\new line' file - Append after match
  • sed '$a\new line' file - Append to end

Advanced Patterns

  • sed 's/^old/new/' - Match start of line
  • sed 's/old$/new/' - Match end of line
  • sed 's/old.*/new/' - Match rest of line
  • sed 's/\(.*\)old\(.*\)/\1new\2/' - Capture groups
  • sed 's/old/new/; t; s/old2/new2/' - Conditional
  • sed -n 's/old/new/p' - Print only modified lines

Multiple Commands

  • sed -e 's/old/new/' -e 's/old2/new2/' file - Multiple expressions
  • sed 's/old/new/; s/old2/new2/' file - Semicolon separator
  • sed -f script.sed file - Read from script file

Common Examples

Replace Text

sed 's/old/new/g' file.txt

Replace all occurrences.

In-Place Edit

sed -i 's/old/new/g' file.txt

Edit file directly.

Delete Lines

sed '/pattern/d' file.txt

Remove matching lines.

Print Range

sed -n '10,20p' file.txt

Print lines 10-20.

Add Line

sed '5a\new content' file.txt

Insert after line 5.

Remove Empty Lines

sed '/^$/d' file.txt

Delete blank lines.

Remove Leading Spaces

sed 's/^[ \t]*//' file.txt

Strip whitespace from start.

Remove Trailing Spaces

sed 's/[ \t]*$//' file.txt

Strip whitespace from end.

Number Lines

sed = file.txt | sed 'N;s/\n/\t/'

Add line numbers.

Extract Field

sed 's/.*:\(.*\):.*/\1/' file.txt

Extract between colons.


Tips

  • Use -i for in-place editing (be careful!)
  • Use -i.bak to create backup
  • Use -n with p to print only selected lines
  • Use g flag for global substitution
  • Use different delimiters (|, #) for complex patterns
  • Combine with other tools in pipelines
  • Test without -i first to verify changes
  • Essential for batch text processing