· bash sed

Sed - UNIX Stream Editor - Cheat Sheet

Usage:

sed [options] ‘instructions’ file.txt | PIPE | STDIN

Example file:

file.txt

one
two
three
one1
two10
three one

Meta-characters:

”^” - matches character(s) at the beginning of a line:

sed -ne '/^pattern/p'  file.txt

”$” - matches character(s) at the end of a line:

sed -ne '/pattern$/p'  file.txt

- match line which contain only “pattern”:

sed -ne '/^pattern$/p'  file.txt

RegEx quantifiers:

”.” - matches any character (typically expect new line)

“*” - 0 or more matches of the previous character

”+” - 1 or more matches of the previous character

”?” - 0 or 1 of the previous character

Character classes:

a. [0-9]

b. [a-z]

NOTE: Character classes match one and only one character.

- print first line:

sed -ne '1p' file.txt

- prints last printable line:

sed -ne '$p' file.txt

- prints lines 2-4 from file:

sed -ne '2,4p' file.txt

- prints all lines except line 1:

sed -ne '1!p' file.txt

- prints all lines with at least one numeric charter:

sed -ne '/[0-9]/p' file.txt

- prints the line with “pattern” plus 2 extra lines:

sed -ne '/pattern/, +2p' file.txt

- print section of file from a line containing “pattern” to end of file:

sed -ne '/pattern/, $p' file.txt

- delete blank lines:

sed -e '/^$/d' file.txt

- deletes every 2nd line beginning with line 1 (1,3,5…):

sed -e '1~2d' file.txt

- replace pattern (case insensitive):

sed -e 's/one/two/Ig' file.txt

- edit files in place and backup:

sed -i.bak -e 's/one/two/Ig' file.txt

- multiply instructions - removes blank lines & substitutes patterns:

sed -e '/^$/d' -e 's/one/two/Ig' file.txt

or

sed -e '/^$/d; s/one/two/Ig' file.txt

- search and replace - substitutes “one” with “two” where line contains “three”:

sed -ne '/three/s/one/two/gp' file.txt

SED reserves few characters based on matched pattern:

“&” - pattern matched OR the values in the pattern space

sed -ne 's/.*/&/p' file.txt

sed -ne 's/.*/Example: &/p' file.txt

- returns pattern with at least 1 numeric at the end of the name:

sed -ne 's/.*[0-9]/&/p' file.txt

- returns pattern with only 1 numeric at the end of the name:

sed -ne 's/[a-z][0-9]\{1\}$/&/pI' file.txt

- returns pattern with at least 1, up to 4 numeric values:

sed -ne 's/[a-z][0-9]\{1,4\}$/&/pI' file.txt

Grouping & Back-references:

- creates two variables \1 & \2 and references \1 & \2

sed -ne 's/\([a-z]\)\([0-9]\)/\1 \2/p' file.txt
  • LinkedIn
  • Tumblr
  • Reddit
  • Google+
  • Pinterest
  • Pocket
Please check my new website to analyse HTTP response headers: HGET.IO