Greetings, fellow keyboard warriors and terminal tamers.
This time, we’re diving into something powerful, sneaky, and super useful: a little tool called sed
. If you’ve ever seen a hacker movie and thought, “How do they type that fast and change stuff so easily?”, well… chances are they’re using tools like sed
.
I’ve been using sed
for years now. It’s helped me fix text files, logs, config files, and even big chunks of code. It saves time and makes you look like a command-line ninja.
Let me show you how to use it the smart way—without making your brain explode.
What Is sed
?
First, let’s define it.
sed
stands for Stream Editor.
It’s a command-line tool in Linux (and macOS too) that lets you edit text—not by opening the file, but by streaming through it and making changes as it goes. Think of it like a find-and-replace robot that never gets tired.
You can use it to:
- Search and replace words or patterns.
- Delete lines.
- Insert or change lines.
- Do all of the above in one command.
So yeah, it’s kinda like having a superpower, but for text.
Why Use sed
?
You might ask, “Why not just open the file and edit it manually?”
Good question.
Here’s when sed
shines:
- You have hundreds of files to fix.
- You need to automate edits (like in a script).
- You want to change files without opening a text editor.
Let’s say you need to remove a password from 1,000 log files. Manually? You’d cry. With sed
? It’s a one-liner.
Getting Started with sed
Let’s start with something simple.
Here’s the basic format:
sed 's/search/replace/' filename
This tells sed
:
- Look for the word
search
- Replace it with
replace
- Only do it on the first match per line
Let’s try it.
Example 1: Replacing a word
sed 's/cat/dog/' animals.txt
If your file animals.txt
says:
I have a cat.
My cat is cute.
It will show this:
I have a dog.
My cat is cute.
Only the first cat
per line gets changed. Want to change all of them? Add the g
(global) flag:
sed 's/cat/dog/g' animals.txt
Now it becomes:
I have a dog.
My dog is cute.
Pun alert: You’ve just turned your sed into a dog whisperer.
Quick Cheatsheet of Useful sed
Options
Here are a few sed
flags you’ll use often:
s
— substitute (find and replace)g
— global (replace all matches in a line)i
— case-insensitive-i
— edit the file in place (change it for real)d
— delete line
Want to remember them? Just say: “Some Great Instructions Definitely Improve” — S, G, I, D, I.
Editing Files In-Place
If you want to save the changes directly into the file, use the -i
flag. Like this:
sed -i 's/cat/dog/g' animals.txt
This replaces all “cat” with “dog” in the actual file. No need to use > output.txt
or make a copy.
Warning: There’s no undo button. Always make a backup before using -i
.
Here’s how I do it:
cp animals.txt animals.bak
Then I sed like a pro without fear.
Deleting Lines with sed
Let’s say you want to remove a certain line. You can do this:
sed '2d' file.txt
This deletes line 2.
Want to delete a range of lines?
sed '5,10d' file.txt
That kills lines 5 to 10. RIP, boring lines.
Want to delete every line that matches a pattern?
sed '/error/d' logs.txt
That deletes all lines containing the word “error”.
It’s like telling sed
: “Please take out the trash.”
Inserting and Changing Lines
Okay, now it gets a bit cooler.
Want to insert a line before line 1?
sed '1i This is the new first line' file.txt
How about after line 3?
sed '3a This comes after line 3' file.txt
And if you want to change line 2?
sed '2c Replaced line two' file.txt
This is helpful when editing scripts, configs, or batch files automatically.
Using Patterns and Wildcards
You can also use wildcards or match patterns with sed
. If you’ve used regex before (regular expressions), this will sound familiar.
Replace numbers with “X”:
sed 's/[0-9]/X/g' file.txt
This turns My PIN is 1234
into:
My PIN is XXXX
Remove lines that start with #
(comments):
sed '/^#/d' script.sh
This is handy when cleaning up config files or scripts.
Three Handy Sed Tricks
Here are some neat sed
one-liners I use a lot:
- Remove blank lines:
sed '/^$/d' file.txt
- Replace tabs with four spaces:
sed 's/\t/ /g' file.txt
- Add a line number to each line:
sed = file.txt | sed 'N;s/\n/ /'
The second one’s a bit weird, but it works like magic.
A Bit About Backup
You can also use -i.bak
to save a backup automatically:
sed -i.bak 's/old/new/g' file.txt
This makes a file.txt.bak
before changing the real one. I do this often when I’m testing.
You never know when your “sed” might “mis-sed”.
When Sed Isn’t Enough
Sometimes, sed
is perfect.
Other times, you’ll want to use awk or perl for fancier stuff. But for most everyday jobs—like replacing words, deleting lines, or cleaning up logs—sed
is the go-to.
It’s lightweight, fast, and already installed on almost every Linux system.
Think of it like a spork. It’s not always perfect, but it does 90% of the job.
Common Mistakes to Avoid
Let’s keep it real. Everyone messes up at first. Here’s what I learned the hard way:
- Forgetting the
g
: Only the first match on each line gets replaced. - No backups: Always test first, or make a copy.
- Bad quotes: Make sure you use
'single quotes'
around your commands to avoid shell confusion. - Wrong file path: Use full paths if you’re unsure.
Remember: sed is a power tool. Respect the sed.
Final Thoughts
sed
might seem a little cryptic at first. But once you use it a few times, it feels natural. Like tying your shoes—but with data.
If you’re writing scripts, fixing config files, or working with logs, sed
will make your life easier. You’ll do in seconds what would take minutes—or hours—manually.
Try using it on a test file. Play around. Make some backups. Break stuff (on purpose). Then fix it. That’s how you learn.
You don’t need to be a hacker to use sed
. But you’ll sure look like one when you do.