DEV Community

HasOne
HasOne

Posted on • Edited on

Working with sed command in Linux

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!

Top comments (0)