Replacements
In-place replacement (GNU)
sed -i -e 's/foo/bar/' example.md
In GNU sed: use -i
without arg.
In-place replacement (BSD)
sed -i '' -e 's/foo/bar/' example.md
In OSX, -i ''
is required.
In-place Multiple replacements
sed -i 's/match1/replace1/g; s/match2/replace2/g' \
replace different matches with different values
sed -i 's/\(MATCH1\|MATCH2\)/VALUE/g' \
replace multiple matches with the same value
File regions
Print until a certain line is met
sed '/begin api/q'
Print until a certain line is met, but not that line
sed '/^# begin/,$d'
Print everything after a given line
sed -n '/end api/,$p'
Print after a given line is found.
Print everything except matching
sed -n '/regex/!p'
Print everything except lines matching regex. Useful for printing files with comments.
Printing REGEX ranges
sed -n -e '/^START$/,/^END$/p'
suppress output and print REGEX range include (^START$,^END$) lines.
OR without “-n” (same result)
sed -e '/^START$/,/^END$/p;d'
print REGEX range and delete other output, the [;] character means run another expression on the input file which is ‘d’ stands for delete .
Append a text after a specific line number
sed -e "1a ## HEADING 02:" README.md
this appends “## HEADING 02:” after the first line in the file README.md and print the result to stdout replace -e with -i to write the file .
Insert text before a specific line number
sed -e "1i # HEADING 01:" README.md
the same as appending but before the first line.
Deleting text
With line number
sed -e "1,5d" README.md
delete a RANGE (i.e. including lines 1 to 5)
sed -e '1,5!d' README.md
delete everything (i.e. excluding lines 1 to 5) it is better to quote sed expressions with single quotes especially when there is a [!] character.
With REGEX matching
sed -e "/REGEX/Id" README.md
delete lines with /REGEX/ matched /I is for insensitive search
sed -e '/REGEX/Ip;d' README.md
this invert the previous sed command delete everything (excluding lines with REGEX)
0 Comments for this cheatsheet. Write yours!