DEV Community

loading...

Working with sed command in Linux

HasOne
A TECH enthusiast Guy, who is mad to change himself to be able to change the World. and learning how to share happiness and how to enjoy other's success!
Updated on ・2 min read

When working with files in Unix-like systems, sed will help you a lot in updating some text in the existing line, deleting, and even inserting, isn't it cool?

Basic

just open up your terminal and type sed --help, you'll get the usage of sed.

Print file:

Now let's print the file ( like cat ):
sed 'p' /etc/passwd

p operator in single quote will print the file. it's basically working like cat command, but if you've noticed there is a problem we're getting line twice, how to get it rid

sed -n 'p' /etc/passwd

-n flag will only give us the updated file.

Let's suppose if we need to print from lines 1 to 3, so how would we do that?
sed -n '1,3 p' /etc/passwd

in the single quotes, the number refers to line from 1 to 3. we just rebuild the head command using sed. isn't it cool!

Advance

let's find some specific text in a file, I'm gonna find my user name in the file:
sed -n '/^pi/ p' /etc/passwd

/^ caret character means the beginning of line find 'pi' text
p for printing

Now let's update the some text, I wanna update the '/bash' to '/sh':
sed -n '/^pi/ s/bash/sh/ p' /etc/passwd

s for substitute (updating) '/bash' to /sh/'

Let's delete the line by using line number:
sed 'Nd' <filename>

N for specifying line number
d for deleting

Best example

sed -i.bak '/^\s*#/d;/^$/d' <file>

this command will help you to remove white space, comment and will give you a new file. and the original will be saved in .bak extension.

Thanks!

Discussion (0)

Forem Open with the Forem app