SED command in UNIX
Stream Editor: a non interactive editor used for filtering out the desired data from the
specified file.
It reads input sequentially, applies the operations specified via the command line or a
sed script and directs the processed data to the standard output.
The instruction is a combination of two components: an address and a command.
Address contains the filter condition that is applied on the data stream to extract the
desired data.
The address in a syntax refers to the range of data of the file on which we wish to
apply the desired action.
Two ways of addressing the lines:
1. By line number.
2. By specifying a pattern that occures in a line
Command is applied on the desired data for processing.
Syntax: sed options 'address action' file(s)
options:
-n suppresses duplicate line printing
-f Reads instruction from a file
-e Interpretes the next string as an instruction or a set of instructions.
Create file bank.lst with following data in editor and then run sed command on it.
Bank.lst
101 Aditya 0 14/11/2000 current
102 Anil 10000 20/05/2011 saving
103 Naman0 20/08/2009 current
104 Ram 10000 15/08/2010 saving
105 Jyotsna 5000 16/06/2012 saving
106 Mukesh 14000 20/12/2009 Current
107 Vishal 14500 30/11/2011 saving
108 Chirag 0 15/12/2012 Current
109 Arya 16000 14/12/2010 Current
110 Priya 130 16/11/2009 Saving
Q. Print first 3 records from bank.lst
root@MUM084:~/Desktop# sed '3q' bank.lst
101 Aditya 0 14/11/2000 current
102 Anil 10000 20/05/2011 saving
103 Naman0 20/08/2009 current
Note: By default sed prints all lines to the standard output.
root@MUM084:~/Desktop# sed '3p' bank.lst
101 Aditya 0 14/11/2000 current
102 Anil 10000 20/05/2011 saving
103 Naman 0 20/08/2009 current
103 Naman 0 20/08/2009 current
104 Ram 10000 15/08/2010 saving
105 Jyotsna 5000 16/06/2012 saving
106 Mukesh 14000 20/12/2009 Current
107 Vishal 14500 30/11/2011 saving
108 Chirag 0 15/12/2012 Current
109 Arya 16000 14/12/2010 Current
110 Priya 130 16/11/2009 Saving
root@MUM084:~/Desktop# sed '1,2p' bank.lst
101 Aditya0 14/11/2000 current
101 Aditya0 14/11/2000 current
102 Anil 10000 20/05/2011 saving
102 Anil 10000 20/05/2011 saving
103 Naman0 20/08/2009 current
104 Ram 10000 15/08/2010 saving
105 Jyotsna 5000 16/06/2012 saving
106 Mukesh 14000 20/12/2009 Current
107 Vishal 14500 30/11/2011 saving
108 Chirag 0 15/12/2012 Current
109 Arya 16000 14/12/2010 Current
110 Priya 130 16/11/2009 Saving
Use -n to suppress duplicate line printing.
root@MUM084:~/Desktop# sed -n '1,2p' bank.lst
101 Aditya 0 14/11/2000 current
102 Anil 10000 20/05/2011 saving
root@MUM084:~/Desktop# sed -n '1,4p' bank.lst
101 Aditya 0 14/11/2000 current
102 Anil 10000 20/05/2011 saving
103 Naman0 20/08/2009 current
104 Ram 10000 15/08/2010 saving
root@MUM084:~/Desktop# sed -n '4,7p' bank.lst
104 Ram 10000 15/08/2010 saving
105 Jyotsna 5000 16/06/2012 saving
106 Mukesh 14000 20/12/2009 Current
107 Vishal 14500 30/11/2011 saving
Note : $ represents the last record in file.
root@MUM084:~/Desktop# sed -n '$p' bank.lst
110 Priya 130 16/11/2009 Saving
root@MUM084:~/Desktop# sed -n '1,2p
> 7,9p
> $p' bank.lst
101 Aditya 0 14/11/2000 current
102 Anil 10000 20/05/2011 saving
107 Vishal 14500 30/11/2011 saving
108 Chirag 0 15/12/2012 Current
109 Arya 16000 14/12/2010 Current
110 Priya 130 16/11/2009 Saving
root@MUM084:~/Desktop# sed -n '3,$!p' bank.lst
101 Aditya 0 14/11/2000 current
102 Anil 10000 20/05/2011 saving
root@MUM084:~/Desktop# sed -n '$!p' bank.lst
101 Aditya 0 14/11/2000 current
102 Anil 10000 20/05/2011 saving
103 Naman0 20/08/2009 current
104 Ram 10000 15/08/2010 saving
105 Jyotsna 5000 16/06/2012 saving
106 Mukesh 14000 20/12/2009 Current
107 Vishal 14500 30/11/2011 saving
108 Chirag 0 15/12/2012 Current
109 Arya 16000 14/12/2010 Current
root@MUM084:~/Desktop# sed -n '2,5!p' bank.lst
101 Aditya 0 14/11/2000 current
106 Mukesh 14000 20/12/2009 Current
107 Vishal 14500 30/11/2011 saving
108 Chirag 0 15/12/2012 Current
109 Arya 16000 14/12/2010 Current
110 Priya 130 16/11/2009 Saving
root@MUM084:~/Desktop# sed -n -e '1,2p' -e '7,9p' -e '$p' bank.lst
101 Aditya 0 14/11/2000 current
102 Anil 10000 20/05/2011 saving
107 Vishal 14500 30/11/2011 saving
108 Chirag 0 15/12/2012 Current
109 Arya 16000 14/12/2010 Current
110 Priya 130 16/11/2009 Saving
root@MUM084:~/Desktop# cat > instr.fil
1,2p
7,9p
$p
root@MUM084:~/Desktop# sed -n -f instr.fil bank.lst
101 Aditya 0 14/11/2000 current
102 Anil 10000 20/05/2011 saving
107 Vishal 14500 30/11/2011 saving
108 Chirag 0 15/12/2012 Current
109 Arya 16000 14/12/2010 Current
110 Priya 130 16/11/2009 Saving
root@MUM084:~/Desktop# sed -n '/current/p' bank.lst
101 Aditya 0 14/11/2000 current
103 Naman0 20/08/2009 current
root@MUM084:~/Desktop# sed -n '/current/,/saving/p' bank.lst
101 Aditya 0 14/11/2000 current
102 Anil 10000 20/05/2011 saving
103 Naman0 20/08/2009 current
104 Ram 10000 15/08/2010 saving
root@MUM084:~/Desktop# sed -n '1,/current/p' bank.lst
101 Aditya 0 14/11/2000 current
102 Anil 10000 20/05/2011 saving
103 Naman0 20/08/2009 current
root@MUM084:~/Desktop# sed -n '3,/current/p' bank.lst
103 Naman0 20/08/2009 current
104 Ram 10000 15/08/2010 saving
105 Jyotsna 5000 16/06/2012 saving
106 Mukesh 14000 20/12/2009 Current
107 Vishal 14500 30/11/2011 saving
108 Chirag 0 15/12/2012 Current
109 Arya 16000 14/12/2010 Current
110 Priya 130 16/11/2009 Saving
root@MUM084:~/Desktop# sed -n '3,/Current/p' bank.lst
103 Naman0 20/08/2009 current
104 Ram 10000 15/08/2010 saving
105 Jyotsna 5000 16/06/2012 saving
106 Mukesh 14000 20/12/2009 Current
root@MUM084:~/Desktop# sed -n '3,/saving/p' bank.lst
103 Naman0 20/08/2009 current
104 Ram 10000 15/08/2010 saving
root@MUM084:~/Desktop# sed -n '/[cC]urrent/p' bank.lst
101 Aditya 0 14/11/2000 current
103 Naman0 20/08/2009 current
106 Mukesh 14000 20/12/2009 Current
108 Chirag 0 15/12/2012 Current
109 Arya 16000 14/12/2010 Current
Writing to other file:
root@MUM084:~/Desktop# sed -n '/[cC]urrent/w clist.lst' bank.lst
root@MUM084:~/Desktop# cat clist.lst
101 Aditya 0 14/11/2000 current
103 Naman0 20/08/2009 current
106 Mukesh 14000 20/12/2009 Current
108 Chirag 0 15/12/2012 Current
109 Arya 16000 14/12/2010 Current
root@MUM084:~/Desktop# sed -n '1,4w clist.lst' bank.lst
root@MUM084:~/Desktop# cat clist.lst
101 Aditya 0 14/11/2000 current
102 Anil 10000 20/05/2011 saving
103 Naman0 20/08/2009 current
104 Ram 10000 15/08/2010 saving
Inserting into file
root@MUM084:~/Desktop# sed '1i 201 Viren 2000 13/05/2012 saving' bank.lst > newbank.lst
root@MUM084:~/Desktop# cat newbank.lst
201 Viren 2000 13/05/2012 saving
101 Aditya 0 14/11/2000 current
102 Anil 10000 20/05/2011 saving
103 Naman0 20/08/2009 current
104 Ram 10000 15/08/2010 saving
105 Jyotsna 5000 16/06/2012 saving
106 Mukesh 14000 20/12/2009 Current
107 Vishal 14500 30/11/2011 saving
108 Chirag 0 15/12/2012 Current
109 Arya 16000 14/12/2010 Current
110 Priya 130 16/11/2009 Saving
root@MUM084:~/Desktop# cat bank.lst
101 Aditya 0 14/11/2000 current
102 Anil 10000 20/05/2011 saving
103 Naman0 20/08/2009 current
104 Ram 10000 15/08/2010 saving
105 Jyotsna 5000 16/06/2012 saving
106 Mukesh 14000 20/12/2009 Current
107 Vishal 14500 30/11/2011 saving
108 Chirag 0 15/12/2012 Current
109 Arya 16000 14/12/2010 Current
110 Priya 130 16/11/2009 Saving
root@MUM084:~/Desktop# sed -n '1,/saving/p' newbank.lst
201 Viren 2000 13/05/2012 saving
101 Aditya 0 14/11/2000 current
102 Anil 10000 20/05/2011 saving
root@MUM084:~/Desktop# sed '4i 204 Viren 2000 13/05/2012 saving' bank.lst > newbank.lst
root@MUM084:~/Desktop# cat newbank.lst
101 Aditya 0 14/11/2000 current
102 Anil 10000 20/05/2011 saving
103 Naman0 20/08/2009 current
204 Viren 2000 13/05/2012 saving
104 Ram 10000 15/08/2010 saving
105 Jyotsna 5000 16/06/2012 saving
106 Mukesh 14000 20/12/2009 Current
107 Vishal 14500 30/11/2011 saving
108 Chirag 0 15/12/2012 Current
109 Arya 16000 14/12/2010 Current
110 Priya 130 16/11/2009 Saving
root@MUM084:~/Desktop# sed '4i\
> 206 viraj 3000 14/01/2011 current
> ' bank.lst >newbank.lst
root@MUM084:~/Desktop# cat newbank.lst
101 Aditya 0 14/11/2000 current
102 Anil 10000 20/05/2011 saving
103 Naman0 20/08/2009 current
206 viraj 3000 14/01/2011 current
104 Ram 10000 15/08/2010 saving
105 Jyotsna 5000 16/06/2012 saving
106 Mukesh 14000 20/12/2009 Current
107 Vishal 14500 30/11/2011 saving
108 Chirag 0 15/12/2012 Current
109 Arya 16000 14/12/2010 Current
110 Priya 130 16/11/2009 Saving
root@MUM084:~/Desktop# sed '4a\
206 viraj 3000 14/01/2011 current
' bank.lst >newbank.lst
root@MUM084:~/Desktop# cat newbank.lst
101 Aditya 0 14/11/2000 current
102 Anil 10000 20/05/2011 saving
103 Naman0 20/08/2009 current
104 Ram 10000 15/08/2010 saving
206 viraj 3000 14/01/2011 current
105 Jyotsna 5000 16/06/2012 saving
106 Mukesh 14000 20/12/2009 Current
107 Vishal 14500 30/11/2011 saving
108 Chirag 0 15/12/2012 Current
109 Arya 16000 14/12/2010 Current
110 Priya 130 16/11/2009 Saving
root@MUM084:~/Desktop# sed 'a\
' bank.lst > newbank.lst
root@MUM084:~/Desktop# cat newbank.lst
101 Aditya 0 14/11/2000 current
102 Anil 10000 20/05/2011 saving
103 Naman0 20/08/2009 current
104 Ram 10000 15/08/2010 saving
105 Jyotsna 5000 16/06/2012 saving
106 Mukesh 14000 20/12/2009 Current
107 Vishal 14500 30/11/2011 saving
108 Chirag 0 15/12/2012 Current
109 Arya 16000 14/12/2010 Current
110 Priya 130 16/11/2009 Saving
root@MUM084:~/Desktop# sed 'i\
' bank.lst > newbank.lst
root@MUM084:~/Desktop# cat newbank.lst
101 Aditya 0 14/11/2000 current
102 Anil 10000 20/05/2011 saving
103 Naman0 20/08/2009 current
104 Ram 10000 15/08/2010 saving
105 Jyotsna 5000 16/06/2012 saving
106 Mukesh 14000 20/12/2009 Current
107 Vishal 14500 30/11/2011 saving
108 Chirag 0 15/12/2012 Current
109 Arya 16000 14/12/2010 Current
110 Priya 130 16/11/2009 Saving
root@MUM084:~/Desktop# sed 'i\
This is blank line
' bank.lst > newbank.lst
root@MUM084:~/Desktop# cat newbank.lst
This is blank line
101 Aditya 0 14/11/2000 current
This is blank line
102 Anil 10000 20/05/2011 saving
This is blank line
103 Naman0 20/08/2009 current
This is blank line
104 Ram 10000 15/08/2010 saving
This is blank line
105 Jyotsna 5000 16/06/2012 saving
This is blank line
106 Mukesh 14000 20/12/2009 Current
This is blank line
107 Vishal 14500 30/11/2011 saving
This is blank line
108 Chirag 0 15/12/2012 Current
This is blank line
109 Arya 16000 14/12/2010 Current
This is blank line
110 Priya 130 16/11/2009 Saving
Deleting a line having specific pattern:
root@MUM084:~/Desktop# sed '/viraj/d' newbank.lst
This is blank line
101 Aditya 0 14/11/2000 current
This is blank line
102 Anil 10000 20/05/2011 saving
This is blank line
103 Naman0 20/08/2009 current
This is blank line
104 Ram 10000 15/08/2010 saving
This is blank line
105 Jyotsna 5000 16/06/2012 saving
This is blank line
106 Mukesh 14000 20/12/2009 Current
This is blank line
107 Vishal 14500 30/11/2011 saving
This is blank line
108 Chirag 0 15/12/2012 Current
This is blank line
109 Arya 16000 14/12/2010 Current
This is blank line
110 Priya 130 16/11/2009 Saving
root@MUM084:~/Desktop# sed '/This is blank line/d' newbank.lst
101 Aditya 0 14/11/2000 current
102 Anil 10000 20/05/2011 saving
103 Naman0 20/08/2009 current
104 Ram 10000 15/08/2010 saving
105 Jyotsna 5000 16/06/2012 saving
106 Mukesh 14000 20/12/2009 Current
107 Vishal 14500 30/11/2011 saving
108 Chirag 0 15/12/2012 Current
109 Arya 16000 14/12/2010 Current
110 Priya 130 16/11/2009 Saving
Substitution:
root@MUM084:~/Desktop# sed 's/\t/ /' bank.lst
this command substitues first occurence of \t by space in each line
101 Aditya 0 14/11/2000 current
102 Anil 10000 20/05/2011 saving
103 Naman 0 20/08/2009 current
104 Ram 10000 15/08/2010 saving
105 Jyotsna 5000 16/06/2012 saving
106 Mukesh 14000 20/12/2009 Current
107 Vishal 14500 30/11/2011 saving
108 Chirag 0 15/12/2012 Current
109 Arya 16000 14/12/2010 Current
110 Priya 130 16/11/2009 Saving
to replace all occurences of \t by space:
root@MUM084:~/Desktop# sed 's/\t/ /g' bank.lst
101 Aditya 0 14/11/2000 current
102 Anil 10000 20/05/2011 saving
103 Naman 0 20/08/2009 current
104 Ram 10000 15/08/2010 saving
105 Jyotsna 5000 16/06/2012 saving
106 Mukesh 14000 20/12/2009 Current
107 Vishal 14500 30/11/2011 saving
108 Chirag 0 15/12/2012 Current
109 Arya 16000 14/12/2010 Current
110 Priya 130 16/11/2009 Saving
root@MUM084:~/Desktop# sed 's/ /\t/g' bank.lst
101 Aditya 0 14/11/2000 current
102 Anil 10000 20/05/2011 saving
103 Naman0 20/08/2009 current
104 Ram 10000 15/08/2010 saving
105 Jyotsna 5000 16/06/2012 saving
106 Mukesh 14000 20/12/2009 Current
107 Vishal 14500 30/11/2011 saving
108 Chirag 0 15/12/2012 Current
109 Arya 16000 14/12/2010 Current
110 Priya 130 16/11/2009 Saving
root@MUM084:~/Desktop# sed '1,3s/ /\t/g' bank.lst
101 Aditya 0 14/11/2000 current
102 Anil 10000 20/05/2011 saving
103 Naman0 20/08/2009 current
104 Ram 10000 15/08/2010 saving
105 Jyotsna 5000 16/06/2012 saving
106 Mukesh 14000 20/12/2009 Current
107 Vishal 14500 30/11/2011 saving
108 Chirag 0 15/12/2012 Current
109 Arya 16000 14/12/2010 Current
110 Priya 130 16/11/2009 Saving
root@MUM084:~/Desktop# sed '1,3s/\t/ /g' bank.lst
101 Aditya 0 14/11/2000 current
102 Anil 10000 20/05/2011 saving
103 Naman 0 20/08/2009 current
104 Ram 10000 15/08/2010 saving
105 Jyotsna 5000 16/06/2012 saving
106 Mukesh 14000 20/12/2009 Current
107 Vishal 14500 30/11/2011 saving
108 Chirag 0 15/12/2012 Current
109 Arya 16000 14/12/2010 Current
110 Priya 130 16/11/2009 Saving
root@MUM084:~/Desktop# sed '1,3s/ /\t/g' bank.lst
101 Aditya 0 14/11/2000 current
102 Anil 10000 20/05/2011 saving
103 Naman0 20/08/2009 current
104 Ram 10000 15/08/2010 saving
105 Jyotsna 5000 16/06/2012 saving
106 Mukesh 14000 20/12/2009 Current
107 Vishal 14500 30/11/2011 saving
108 Chirag 0 15/12/2012 Current
109 Arya 16000 14/12/2010 Current
110 Priya 130 16/11/2009 Saving
root@MUM084:~/Desktop# sed '1,3s/current /demat/' bank.lst
101 Aditya 0 14/11/2000 current
102 Anil 10000 20/05/2011 saving
103 Naman0 20/08/2009 current
104 Ram 10000 15/08/2010 saving
105 Jyotsna 5000 16/06/2012 saving
106 Mukesh 14000 20/12/2009 Current
107 Vishal 14500 30/11/2011 saving
108 Chirag 0 15/12/2012 Current
109 Arya 16000 14/12/2010 Current
110 Priya 130 16/11/2009 Saving
root@MUM084:~/Desktop# sed '1,3s/current/demat/' bank.lst
101 Aditya 0 14/11/2000 demat
102 Anil 10000 20/05/2011 saving
103 Naman0 20/08/2009 demat
104 Ram 10000 15/08/2010 saving
105 Jyotsna 5000 16/06/2012 saving
106 Mukesh 14000 20/12/2009 Current
107 Vishal 14500 30/11/2011 saving
108 Chirag 0 15/12/2012 Current
109 Arya 16000 14/12/2010 Current
110 Priya 130 16/11/2009 Saving
Remembered Patterns in sed
root@MUM084:~/Desktop# sed -n '/\([Aa]\)\([a-z]\)/p' bank.lst
101 Aditya 0 14/11/2000 current
102 Anil 10000 20/05/2011 saving
103 Naman0 20/08/2009 current
104 Ram 10000 15/08/2010 saving
105 Jyotsna 5000 16/06/2012 saving
107 Vishal 14500 30/11/2011 saving
108 Chirag 0 15/12/2012 Current
109 Arya 16000 14/12/2010 Current
110 Priya 130 16/11/2009 Saving
root@MUM084:~/Desktop# sed -n '/\([Aa]\)\([a-z]*\)/p' bank.lst
101 Aditya 0 14/11/2000 current
102 Anil 10000 20/05/2011 saving
103 Naman0 20/08/2009 current
104 Ram 10000 15/08/2010 saving
105 Jyotsna 5000 16/06/2012 saving
107 Vishal 14500 30/11/2011 saving
108 Chirag 0 15/12/2012 Current
109 Arya 16000 14/12/2010 Current
110 Priya 130 16/11/2009 Saving
root@MUM084:~/Desktop# sed -n '/\([Aa]\)\([Dd]*\)/p' bank.lst
101 Aditya 0 14/11/2000 current
102 Anil 10000 20/05/2011 saving
103 Naman0 20/08/2009 current
104 Ram 10000 15/08/2010 saving
105 Jyotsna 5000 16/06/2012 saving
107 Vishal 14500 30/11/2011 saving
108 Chirag 0 15/12/2012 Current
109 Arya 16000 14/12/2010 Current
110 Priya 130 16/11/2009 Saving
root@MUM084:~/Desktop# sed -n '/\([Aa]\)/p' bank.lst
101 Aditya 0 14/11/2000 current
102 Anil 10000 20/05/2011 saving
103 Naman0 20/08/2009 current
104 Ram 10000 15/08/2010 saving
105 Jyotsna 5000 16/06/2012 saving
107 Vishal 14500 30/11/2011 saving
108 Chirag 0 15/12/2012 Current
109 Arya 16000 14/12/2010 Current
110 Priya 130 16/11/2009 Saving
root@MUM084:~/Desktop# sed -n '/\([Cc]\)/p' bank.lst
101 Aditya 0 14/11/2000 current
103 Naman0 20/08/2009 current
106 Mukesh 14000 20/12/2009 Current
108 Chirag 0 15/12/2012 Current
109 Arya 16000 14/12/2010 Current
root@MUM084:~/Desktop# sed -n '/\([Pp]\)/p' bank.lst
110 Priya 130 16/11/2009 Saving
root@MUM084:~/Desktop# sed -n '/\([A]\)/p' bank.lst
101 Aditya 0 14/11/2000 current
102 Anil 10000 20/05/2011 saving
109 Arya 16000 14/12/2010 Current
root@MUM084:~/Desktop# sed -n '/\([^Pp]\)/p' bank.lst
101 Aditya 0 14/11/2000 current
102 Anil 10000 20/05/2011 saving
103 Naman0 20/08/2009 current
104 Ram 10000 15/08/2010 saving
105 Jyotsna 5000 16/06/2012 saving
106 Mukesh 14000 20/12/2009 Current
107 Vishal 14500 30/11/2011 saving
108 Chirag 0 15/12/2012 Current
109 Arya 16000 14/12/2010 Current
110 Priya 130 16/11/2009 Saving
root@MUM084:~/Desktop# sed -n '/\([Aa]\)\([d]\)/p' bank.lst
101 Aditya 0 14/11/2000 current
root@MUM084:~/Desktop# sed -n '/\([Aa]\)\([n]\)/p' bank.lst
102 Anil 10000 20/05/2011 saving
103 Naman0 20/08/2009 current
root@MUM084:~/Desktop# sed -n '/\([i]\)\([a-z]*\)/p' bank.lst
101 Aditya 0 14/11/2000 current
102 Anil 10000 20/05/2011 saving
104 Ram 10000 15/08/2010 saving
105 Jyotsna 5000 16/06/2012 saving
107 Vishal 14500 30/11/2011 saving
108 Chirag 0 15/12/2012 Current
110 Priya 130 16/11/2009 Saving
root@MUM084:~/Desktop#