sed
sed linux command cheatsheet by Thamizhiniyan C S
Introduction
Sed is a Stream Editor used for modifying the files in unix (or linux).
Syntax
Important Flags
-e
To add a script/command that needs to be executed with the pattern/script(on searching for pattern)
-f
Specify the file containing string pattern
-E
Use extended regular expressions
-n
Suppress the automatic printing or pattern spacing
Modes / Commands
s
(Most used)Substitute mode (find and replace mode)
y
Works same as substitution; the only difference is, it works on individual bytes in the string provided(this mode takes no arguments/conditions)
Arguments
/g
globally(any pattern change will be affected globally, i.e. throughout the text; generally works with s mode)
/i
To make the pattern search case-insensitive(can be combined with other flags)
/d
To delete the pattern found(Deletes the whole line; takes no parameter like conditions/modes/to-be-replaced string)
/p
prints the matching pattern(a duplicate will occur in output if not suppressed with -n flag.)
/1,/2,/3../n
To perform an operation on an nth occurrence in a line(works with s mode)
Examples
Replacing or substituting string
Replacing the nth occurrence of a pattern in a line
Replacing all the occurrence of the pattern in a line
Replacing from nth occurrence to all occurrences in a line
Changing the slash (/ -> _) delimiter
Using & as the matched string ( adding curly braises )
Replace the word “unix” in a line with twice as the word like “unixunix”
Switch the words “unixlinux” as “linuxunix”
Switching the first three characters in a line
Duplicating the replaced line with /p flag
Printing only the replaced lines
Run multiple sed commands by piping the output of one sed command as input to another sed command
To run multiple sed commands in a single sed command
Replacing string on a specific line number
Replacing string on a range of lines
Replacing the text from second line to last line in the file
Replace on a lines which matches a pattern. Here the sed command first looks for the lines which has the pattern “linux” and then replaces the word “unix” with “centos”
Deleting lines
Duplicating lines
Sed as grep command
Add a line after a match
Add a line before a match
Change a line
Transform like tr command
Transform the first occurrence of the word 'the' with 'this' in each line
Case Insensitive transform all the occurrences of the word 'thy' with 'your'
Case Insensitive. Highlight all the occurrences of 'thy' by wrapping them up in brace brackets
Replace occurrences of credit card numbers in the format XXXX XXXX XXXX with a masked version **** **** **** in each line
Rearranges these groups in reverse order, separated by whitespace, effectively reversing the order of the groups of digits in each line
Substitute every 3rd occurrence of the word 'hack' to 'back' on every line
Substitute every 3rd occurrence of the word 'hack' to 'back' on 3rd and 4th line
Formatting the trailing spaces in sed1.txt with a colon(:)
Making every line to start with a bullet point and enclose the digits in square brackets using regex
Remove all digits and replace trailing spaces into a single space
Last updated
Was this helpful?