- Home
-
SED Command
SED Command Cheatsheet
Comprehensive guide to SED (Stream Editor) covering command syntax, options, commands, flags, address patterns, regular expressions, and practical examples for powerful text manipulation and automation.
Essential for VPS server administrators, DevOps engineers, and Linux users who need to automate text processing tasks on their servers.
Free account required
SED Syntax
$ sed [options] 'command' file
SED (Stream Editor) is a powerful text processing tool essential for Linux server administration and log file analysis. Perfect for processing configuration files and automating text transformations.
Related Cheatsheets
Table of Contents
SED Options
Option | Description | Example |
---|---|---|
-n | Suppress automatic printing of pattern space | $ sed -n '/banana/p' data.txt |
-i | Edit file in-place (backup created if extension provided) | $ sed -i 's/banana/orange/' data.txt |
-e | Execute multiple sed commands | $ sed -e 'command1' -e 'command2' input-file |
-f | Read sed commands from a script file | $ sed -f script.sed data.txt |
-r or -E | Use extended regular expressions | $ sed -E 's/(word1|word2)/match/' file.txt |
SED Commands
Command | Description | Example |
---|---|---|
d | Delete the current pattern space (line) | $ echo "Hello, World!" | sed 's/World!/World/' |
s | Used for substitution | $ echo "Hello, World!" | sed 's/World!/Universe/' |
i | Insert text before the current line | $ echo "Hello!" | sed 'i Hello' |
a | Append text after the current line | $ echo "Hello." | sed 'a World!' |
r | Append a read from a file | $ echo "Hello." | sed 'r additional.txt' |
c | Change (replace) text | $ echo "Hello, World!" | sed 'c Goodbye' |
p | Print the current pattern space | $ sed -n '/pattern/p' file.txt |
q | Quit the sed command at the specified point | $ sed '2q' data.txt |
y | Transform characters (like tr command) | $ echo "hello" | sed 'y/helo/HELO/' |
n | Read next input line | $ sed 'n;d' file.txt |
SED Flags (for substitution command)
Flag | Description | Example |
---|---|---|
g | Globally replace all occurrences of a pattern in the current line | $ echo "Hello, hello, hello!" | sed 's/hello/Hi/g' |
p | Print only the substituted line (use with -n) | $ sed -n 's/pattern/&/p' data.txt |
d | Delete the pattern space (current line) | $ sed '/pattern/d' file.txt |
i | Case-insensitive matching | $ sed 's/hello/Hi/i' file.txt |
w | Write the pattern space to a file | $ sed -n 's/pattern/&/w output.txt' data.txt |
1,2,3... | Replace the Nth occurrence only | $ echo "hello hello hello" | sed 's/hello/Hi/2' |
Address Patterns
Addresses specify which lines the sed command should act upon. You can use line numbers, patterns, or ranges.
Single Line Number
$ sed '3d' file.txt # Delete line 3
Line Range
$ sed '2,5d' file.txt # Delete lines 2 to 5
$ sed '2,5p' file.txt # Print lines 2 to 5
Pattern Matching
$ sed '/pattern/d' file.txt # Delete lines matching pattern
$ sed '/^$/d' file.txt # Delete empty lines
Pattern Range
$ sed '/start/,/end/d' file.txt # Delete from start to end pattern
Last Line
$ sed '$d' file.txt # Delete last line
$ sed '$p' file.txt # Print last line
Negation (NOT)
$ sed '/pattern/!d' file.txt # Delete lines NOT matching pattern
Regex Metacharacters
Metacharacter | Description |
---|---|
. | Match any character except new line |
? | Match 0 or one characters |
* | Match 0 or more characters |
+ | Match 1 or more characters |
^ | Beginning of line |
$ | End of line |
[abc] | Match any character in the set (a, b, or c) |
[^abc] | Match any character NOT in the set |
| | Alternation (OR operator) |
\< | Start of word |
\> | End of word |
\( \) | Group expressions (backreferences) |
\n | Backreference (nth captured group) |
Common Examples
Replace Text (Basic Substitution)
$ sed 's/old/new/' file.txt # Replace first occurrence per line
$ sed 's/old/new/g' file.txt # Replace all occurrences
Delete Lines
$ sed '/pattern/d' file.txt # Delete lines matching pattern
$ sed '/^$/d' file.txt # Delete empty lines
$ sed '/^#/d' file.txt # Delete comment lines
Tip: Combine SED with grep for powerful log analysis workflows.
Print Specific Lines
$ sed -n '5p' file.txt # Print line 5
$ sed -n '10,20p' file.txt # Print lines 10 to 20
$ sed -n '/pattern/p' file.txt # Print lines matching pattern
Multiple Commands
$ sed -e 's/foo/bar/' -e 's/baz/qux/' file.txt
$ sed 's/foo/bar/; s/baz/qux/' file.txt
In-Place Editing
$ sed -i 's/old/new/g' file.txt # Edit file directly (Linux)
$ sed -i.bak 's/old/new/g' file.txt # Create backup with .bak extension
Insert and Append Text
$ sed '3i\New line here' file.txt # Insert before line 3
$ sed '3a\New line here' file.txt # Append after line 3
Backreferences (Capture Groups)
$ sed 's/\(.*\)@\(.*\)/\2 - \1/' emails.txt # Swap email parts
$ sed 's/\([0-9]\{3\}\)-\([0-9]\{4\}\)/(\1) \2/' phone.txt
Case Conversion (GNU sed)
$ sed 's/.*/\U&/' file.txt # Convert to uppercase
$ sed 's/.*/\L&/' file.txt # Convert to lowercase
Remove Leading/Trailing Whitespace
$ sed 's/^[ \t]*//' file.txt # Remove leading whitespace
$ sed 's/[ \t]*$//' file.txt # Remove trailing whitespace
$ sed 's/^[ \t]*//; s/[ \t]*$//' file.txt # Remove both
Number Lines
$ sed '=' file.txt | sed 'N;s/\n/\t/' # Add line numbers
Resources
VPS Hosting
Master Text Processing & Automation
Need powerful servers for log analysis and text processing? Check out our VPS benchmarks to find the perfect hosting provider with optimal CPU and disk performance.