Sed basics
| Print file while replacing replacing a word. |
| sed ‘s/old/new/g’ file.txt |
| Print file with changes to a new file. |
| sed ‘s/old/new/g’ file.txt > newfile.txt |
| Change file in place. |
| sed ‘s/old/new/g’ -i file.txt |
| Change file in place. But make a backup of the original with .backup appended to the file name. |
| sed ‘s/old/new/g’ -i.backup file.txt |
| Change output of another command by piping it to sed. |
| echo ‘old text’ | sed ‘s/old/new/g’ |
| Run multiple sed commands from a script. |
| echo ‘s/old/new/g’ >> script.sed echo ‘/Hello/d’ >> script.sed sed -f script.sed file.txt |
| Run multiple commands from the command line. |
| sed -e ‘s/old/new/g’ -e ‘/hello/d’ file.txt |
Replacing text
| Replace all occurances of a string. |
| sed ‘s/old/new/g’ file.txt |
| Replace only the nth occurence of a string in a file. |
| sed ‘s/old/new/ 2’ file.txt |
| Replace replace a string only on the 5th line |
| sed ‘5 s/old/new/’ file.txt |
| Replace “world” with “universe” but only if the line begins with “hello” |
| sed ‘/hello/s/world/universe/’ file.txt |
| Remove “\” from the end of each line. |
| sed ‘s/\\$//’ file.txt |
| Remove all whitespace from beginning of each line. |
| sed ‘s/^\s*//’ file.txt |
| Remove comments. Even those that are at the end of a line. |
| sed ‘s/#.*$//’ file.txt |
Search for text
| Search for a string and only print the lines that were matched. |
| sed -n ‘/hello/p’ file.txt |
| Case insensitive search. |
| sed -n ‘/hello/Ip’ file.txt |
| Search for a string but only output lines that do not match. |
| sed -n ‘/hello/!p’ file.txt |
Appending lines
| Append line after line 2 |
| sed ‘2a Text after line 2’ file.txt |
| Append line at the end of the file |
| sed ‘$a this is the end of the file’ file.txt |
| Append line after every 3rd line starting from line 3 |
| sed ‘3~3a Some text’ file.txt |
Prepending lines
| Insert text before line 5. |
| sed ‘5i line number five’ file.txt |
| Insert text before each line that matches pattern. Insert “Example:” before each line that contains “hello world” |
| sed ‘/hello world/i Example:’ file.txt |
Deleting lines
| Delete line 5-7 in file. |
| sed ‘5,7d’ file.txt |
| Delete every 2nd line starting with line 3. |
| sed ‘3~2d’ file.txt |
| Delete the last line in file |
| sed ‘$d’ file.txt |
| Delete lines starting with “Hello”. |
| sed ‘/^Hello/d’ file.txt |
| Delete all empty lines. |
| sed ‘/^$/d’ file.txt |
| Delete lines starting with “#” |
| sed ‘/^#/d’ file.txt |
