Table of Contents

Sed

General Information

Stream editor tips and tricks.

Checklist


Print Lines

Different ways to print specific lines.

Print only line 5 pattern space

sed -n '5p' /etc/passwd

Line 5, don't delete it

sed '5!d' /etc/passwd

Print up to line 5, quit and delete the rest of the output

sed '5q;d' /etc/passwd

Swap Patterns

Edit files by swapping pattern spaces.


Insert Lines

Insert lines before a found matched pattern.

Given the contents of /etc/resolv.conf:

# Generated by NetworkManager
nameserver 192.168.1.254

Insert a new DNS entry that will be checked first:

sed -i '/nameserver/ i\nameserver 8.8.8.8' /etc/resolv.conf

Results in:

# Generated by NetworkManager
nameserver 8.8.8.8
nameserver 192.168.1.254

Insert at first line

Insert also works against line numbers.

Insert a new comment at line 1:

sed -i '1 i\# My first line comment' /etc/resolv.conf

Results in:

# My first line comment
# Generated by NetworkManager
nameserver 8.8.8.8
nameserver 192.168.1.254

Append Lines

Append lines after a found matched pattern.

Given the contents of /etc/resolv.conf:

# Generated by NetworkManager
nameserver 8.8.8.8
nameserver 192.168.1.254

Append a new DNS entry that will be checked 2nd:

sed -i '/nameserver 8.8.8.8/ a\nameserver 8.8.4.4' /etc/resolv.conf

Results in:

# Generated by NetworkManager
nameserver 8.8.8.8
nameserver 8.8.4.4
nameserver 192.168.1.254

Remove Lines

Remove lines that match a pattern.

Given /etc/resolv.conf:

# Generated by NetworkManager
nameserver 8.8.8.8
nameserver 8.8.4.4
nameserver 192.168.1.254

Remove the 8.8.4.4 entry:

sed -i '/8.8.4.4/d' /etc/resolv.conf

Results in:

# Generated by NetworkManager
nameserver 8.8.8.8
nameserver 192.168.1.254