Difference between revisions of "Linux/C3/More-on-sed-command/English"
(Created page with ''''Title of script''': sed - The stream editor '''Author: Sachin Patil''' '''Keywords: sed, substitute, insert, delete''' {| style="border-spacing:0;" | style="border:1pt so…') |
Nancyvarkey (Talk | contribs) |
||
(2 intermediate revisions by one other user not shown) | |||
Line 1: | Line 1: | ||
− | '''Title of script''': sed | + | '''Title of script''': More on sed |
− | '''Author: Sachin Patil''' | + | '''Author: Sachin Patil and Anirban''' |
'''Keywords: sed, substitute, insert, delete''' | '''Keywords: sed, substitute, insert, delete''' | ||
Line 16: | Line 16: | ||
− | | style="border:1pt solid #000000;padding:0.106cm;"| Welcome to | + | | style="border:1pt solid #000000;padding:0.106cm;"| Welcome to the spoken tutorial on '''More on sed.''' |
|- | |- | ||
Line 22: | Line 22: | ||
Learning objectives | Learning objectives | ||
− | | style="border:1pt solid #000000;padding:0.106cm;"| In this tutorial | + | | style="border:1pt solid #000000;padding:0.106cm;"| In this tutorial, we will learn some more '''sed '''commands, through some examples. |
|- | |- | ||
Line 33: | Line 33: | ||
| style="border:1pt solid #000000;padding:0.106cm;"| To record this tutorial, I am using | | style="border:1pt solid #000000;padding:0.106cm;"| To record this tutorial, I am using | ||
− | '''Ubuntu Linux''' 12.04''' Operating System''' and | + | *'''Ubuntu Linux''' 12.04''' Operating System''' and |
+ | *'''GNU BASH''' version 4.2.24 | ||
− | + | Please note,''' GNU Bash''' version 4 or above is recommended to practice this tutorial. | |
− | + | ||
− | Please note,''' GNU | + | |
|- | |- | ||
Line 46: | Line 45: | ||
− | | style="border:1pt solid #000000;padding:0.106cm;"| | + | | style="border:1pt solid #000000;padding:0.106cm;"| As prerequisites, |
− | You should know | + | You should know basics of '''Linux terminal.''' |
You should be aware of sed tool. | You should be aware of sed tool. | ||
Line 58: | Line 57: | ||
|- | |- | ||
| style="border:1pt solid #000000;padding:0.106cm;"| | | style="border:1pt solid #000000;padding:0.106cm;"| | ||
− | | style="border:1pt solid #000000;padding:0.106cm;"| The major use of sed is substitution. | + | | style="border:1pt solid #000000;padding:0.106cm;"| The major use of '''sed''' is substitution. |
− | + | Replacing some pattern in the input with something else. | |
|- | |- | ||
| style="border:1pt solid #000000;padding:0.106cm;"| Type | | style="border:1pt solid #000000;padding:0.106cm;"| Type | ||
− | '''cat seddemo. | + | '''cat seddemo.txt''' |
Line 72: | Line 71: | ||
<nowiki>[ </nowiki>Point to the fourth and sixth line ] | <nowiki>[ </nowiki>Point to the fourth and sixth line ] | ||
− | | style="border:1pt solid #000000;padding:0.106cm;"| | + | | style="border:1pt solid #000000;padding:0.106cm;"| Let's first look at the original file '''seddemo.txt''' |
− | + | ||
− | + | ||
Line 85: | Line 82: | ||
<nowiki>[</nowiki>enter] | <nowiki>[</nowiki>enter] | ||
− | | style="border:1pt solid #000000;padding:0.106cm;"| Notice the word '''Kumar''' occurs two times in the fourth and once in the sixth line. | + | | style="border:1pt solid #000000;padding:0.106cm;"| Notice the word '''Kumar''' occurs two times in the fourth line and once in the sixth line. |
− | + | ||
− | |||
− | + | If you want to replace all occurrences of '''‘Kumar’''' with '''‘Roy’''', type on the '''terminal''' | |
− | '''sed''' | + | '''sed space''' within single quote ''''s front slash / opening square bracket [k capital K closing square bracket ]umar front slash/ Roy front slash/'''' after the quotes '''space seddemo.txt''' |
− | ''' | + | Press '''Enter'''. |
|- | |- | ||
Line 100: | Line 95: | ||
− | + | [point to 4th line of both output and file] | |
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
| style="border:1pt solid #000000;padding:0.106cm;"| Notice the fourth line. | | style="border:1pt solid #000000;padding:0.106cm;"| Notice the fourth line. | ||
− | Only the first occurrence of ''' | + | Only the first occurrence of '''Kumar''' is changed to '''Roy''', not the second one. |
− | Sixth line had one occurrence of the word ''' | + | Sixth line had one occurrence of the word '''Kumar''' and this is replaced now. |
− | So, we see only the first entry of the lines has been changed. | + | |- |
+ | | style="border:1pt solid #000000;padding:0.106cm;"| | ||
+ | | style="border:1pt solid #000000;padding:0.106cm;"| So, we see only the first entry of the lines has been changed. | ||
This is because, by default, the first matched entry of any line is substituted. | This is because, by default, the first matched entry of any line is substituted. | ||
− | To substitute all the matched entries we need to use the flag''' g''' | + | |- |
+ | | style="border:1pt solid #000000;padding:0.106cm;"| | ||
+ | | style="border:1pt solid #000000;padding:0.106cm;"| To substitute all the matched entries we need to use the flag ''' g''' option. | ||
|- | |- | ||
− | | style="border:1pt solid #000000;padding:0.106cm;"| Type | + | | style="border:1pt solid #000000;padding:0.106cm;"|Type |
− | '''sed 's | + | '''sed 's /[ kK]umar/Roy/g' seddemo.txt''' |
<nowiki>[</nowiki>enter] | <nowiki>[</nowiki>enter] | ||
− | | style="border:1pt solid #000000;padding:0.106cm;"| Type | + | | style="border:1pt solid #000000;padding:0.106cm;"| Let me clear the '''prompt. ''' Type |
− | '''sed | + | '''sed space within single quotes 's /[ kK]umar/Roy/g'''' after the single quote '''space seddemo.txt''' |
− | And | + | And press '''Enter''' |
Now, both entries of the fourth line are replaced. | Now, both entries of the fourth line are replaced. | ||
− | |||
− | |||
|- | |- | ||
| style="border:1pt solid #000000;padding:0.106cm;"| | | style="border:1pt solid #000000;padding:0.106cm;"| | ||
− | | style="border:1pt solid #000000;padding:0.106cm;"| Say we want to replace the words '''electronics''' with the word '''electrical''' | + | | style="border:1pt solid #000000;padding:0.106cm;"|We can make multiple substitutions in one go as well. |
+ | |||
+ | Say we want to replace the words '''electronics''' with the word '''electrical''' | ||
And '''civil''' with '''metallurgy''' in the file '''seddemo.txt''' | And '''civil''' with '''metallurgy''' in the file '''seddemo.txt''' | ||
Line 147: | Line 140: | ||
− | '''sed -e 's/electronics/electrical/g’ ''' | + | '''sed -e 's/electronics/electrical/g’ ''' |
− | '''-e ‘s/civil/metallurgy/g' seddemo.txt''' | + | '''-e ‘s/civil/metallurgy/g' after the single quote space seddemo.txt''' |
Line 158: | Line 151: | ||
| style="border:1pt solid #000000;padding:0.106cm;"| Type: | | style="border:1pt solid #000000;padding:0.106cm;"| Type: | ||
− | '''sed | + | '''sed space -e space within single quotes ‘s/electronics/electrical/g’ -e ‘s/civil/metallurgy/g’''' after the single quote ''' space seddemo.txt''' |
− | And ''' | + | And press '''Enter.''' |
+ | |||
+ | You can see that the words are replaced. | ||
|- | |- | ||
Line 170: | Line 165: | ||
<nowiki>[</nowiki>enter] | <nowiki>[</nowiki>enter] | ||
− | | style="border:1pt solid #000000;padding:0.106cm;"| Now we want to change the stream of '''Anirban '''from '''computers''' to '''mathematics.''' | + | | style="border:1pt solid #000000;padding:0.106cm;"| Now we want to change the '''stream''' of '''Anirban '''from '''computers''' to '''mathematics.''' |
In such case we would need to type: | In such case we would need to type: | ||
− | '''sed''' | + | '''sed space''' within single quotes ''''/Anirban/s/computers/mathematics/g' ''' after the single quotes '''space seddemo.txt''' |
Press '''Enter.''' | Press '''Enter.''' | ||
+ | |||
+ | We see that the '''stream''' is changed. | ||
+ | |||
|- | |- | ||
Line 195: | Line 193: | ||
| style="border:1pt solid #000000;padding:0.106cm;"| Let us understand what this is. | | style="border:1pt solid #000000;padding:0.106cm;"| Let us understand what this is. | ||
− | First we write sed then in single quotes we write the pattern to be matched. | + | First we write '''sed''' then in single quotes we write the pattern to be matched. |
− | This is Anirban | + | This is '''Anirban'''. |
− | + | Now after the slash comes the operation. | |
− | + | This is '''s''' that stands for substitution, as we have already seen. | |
− | Then the new word that would be substituted which is mathematics. | + | Then we mention the pattern to be replaced which is '''computers'''. |
+ | |||
+ | Then the new word that would be substituted, which is '''mathematics'''. | ||
|- | |- | ||
| style="border:1pt solid #000000;padding:0.106cm;"| | | style="border:1pt solid #000000;padding:0.106cm;"| | ||
− | | style="border:1pt solid #000000;padding:0.106cm;"| We can also use sed to add | + | | style="border:1pt solid #000000;padding:0.106cm;"| We can also use '''sed''' to add or delete lines in the file. |
− | Say we want to select those lines which do not have stream as '''electronics.''' | + | Say we want to select those lines which do not have '''stream''' as '''electronics.''' |
|- | |- | ||
Line 223: | Line 223: | ||
− | | style="border:1pt solid #000000;padding:0.106cm;"| For that we have the '''d '''flag. | + | | style="border:1pt solid #000000;padding:0.106cm;"| For that, we have the '''d '''flag. |
− | + | type: | |
− | '''sed''' | + | '''sed space''' (within single quotes) '''(front slash) /electronics/d''' after the single quotes '''space seddemo.txt space greater than sign space nonelectronics.txt''' |
+ | |||
+ | Press '''Enter'''. | ||
− | |||
|- | |- | ||
Line 237: | Line 238: | ||
<nowiki>[</nowiki>enter] | <nowiki>[</nowiki>enter] | ||
− | | style="border:1pt solid #000000;padding:0.106cm;"| To see the contents type: | + | | style="border:1pt solid #000000;padding:0.106cm;"| To see the contents, type: |
− | + | '''cat space nonelectronics.txt''' | |
− | and press | + | and press '''Enter. |
|- | |- | ||
Line 251: | Line 252: | ||
<nowiki>[</nowiki>enter] | <nowiki>[</nowiki>enter] | ||
− | | style="border:1pt solid #000000;padding:0.106cm;"| Say at the start of the file we want to add a line Student Information. | + | | style="border:1pt solid #000000;padding:0.106cm;"| Say, at the start of the file we want to add a line '''Student Information'''. |
− | For that we have the i action. | + | For that we have the '''i''' action. |
− | We need to type: | + | |- |
+ | | style="border:1pt solid #000000;padding:0.106cm;"| | ||
+ | | style="border:1pt solid #000000;padding:0.106cm;"| We need to type: | ||
− | sed space in single quotes | + | '''sed space''' in single quotes ''''1i space Student Information' seddemo.txt ''' |
− | And | + | And press '''Enter.''' |
+ | |||
+ | You can see the output. | ||
|- | |- | ||
| style="border:1pt solid #000000;padding:0.106cm;"| | | style="border:1pt solid #000000;padding:0.106cm;"| | ||
− | | style="border:1pt solid #000000;padding:0.106cm;"| | + | | style="border:1pt solid #000000;padding:0.106cm;"| In fact, we can enter multiple lines like this. |
− | Say we want to add the two lines we would do it in a similar way. | + | Say, we want to add the two lines we would do it in a similar way. |
+ | |||
+ | Along with '''Student Information''' we also want to add '''academics''' in the next year. | ||
− | |||
|- | |- | ||
Line 280: | Line 286: | ||
− | sed space | + | '''sed space''' within single quotes '''i space Student Information \n 2013'''' after the quotes '''space seddemo.txt''' |
− | ''' | + | Press '''Enter''' |
− | Notice '''\n '''between the string ‘Information’ and | + | |- |
+ | | style="border:1pt solid #000000;padding:0.106cm;"| | ||
+ | | style="border:1pt solid #000000;padding:0.106cm;"| | ||
+ | Notice '''\n '''between the string ‘Information’ and ‘2013’. | ||
− | '''\n '''prints | + | '''\n '''prints 2013 in the next line after ‘Student Information’ |
|- | |- |
Latest revision as of 15:41, 16 December 2013
Title of script: More on sed
Author: Sachin Patil and Anirban
Keywords: sed, substitute, insert, delete
Visual Cue | Narration |
Display slide 1
|
Welcome to the spoken tutorial on More on sed. |
Display slide 2
Learning objectives |
In this tutorial, we will learn some more sed commands, through some examples. |
Display slide 3
System Requirement
|
To record this tutorial, I am using
Please note, GNU Bash version 4 or above is recommended to practice this tutorial. |
Display slide 4
Prerequisites
|
As prerequisites,
You should know basics of Linux terminal. You should be aware of sed tool. For relevant tutorials please visit our website: |
The major use of sed is substitution.
Replacing some pattern in the input with something else. | |
Type
cat seddemo.txt
|
Let's first look at the original file seddemo.txt
|
Type
|
Notice the word Kumar occurs two times in the fourth line and once in the sixth line.
sed space within single quote 's front slash / opening square bracket [k capital K closing square bracket ]umar front slash/ Roy front slash/' after the quotes space seddemo.txt Press Enter. |
Show the output
|
Notice the fourth line.
Only the first occurrence of Kumar is changed to Roy, not the second one. Sixth line had one occurrence of the word Kumar and this is replaced now. |
So, we see only the first entry of the lines has been changed.
This is because, by default, the first matched entry of any line is substituted. | |
To substitute all the matched entries we need to use the flag g option. | |
Type
|
Let me clear the prompt. Type
sed space within single quotes 's /[ kK]umar/Roy/g' after the single quote space seddemo.txt And press Enter Now, both entries of the fourth line are replaced. |
We can make multiple substitutions in one go as well.
Say we want to replace the words electronics with the word electrical And civil with metallurgy in the file seddemo.txt | |
Type
-e ‘s/civil/metallurgy/g' after the single quote space seddemo.txt
|
Type:
sed space -e space within single quotes ‘s/electronics/electrical/g’ -e ‘s/civil/metallurgy/g’ after the single quote space seddemo.txt And press Enter. You can see that the words are replaced. |
Type
|
Now we want to change the stream of Anirban from computers to mathematics.
sed space within single quotes '/Anirban/s/computers/mathematics/g' after the single quotes space seddemo.txt Press Enter. We see that the stream is changed.
|
[highlight text inside single quotes]
|
Let us understand what this is.
First we write sed then in single quotes we write the pattern to be matched.
Now after the slash comes the operation. This is s that stands for substitution, as we have already seen. Then we mention the pattern to be replaced which is computers. Then the new word that would be substituted, which is mathematics. |
We can also use sed to add or delete lines in the file.
Say we want to select those lines which do not have stream as electronics. | |
Type
|
For that, we have the d flag.
sed space (within single quotes) (front slash) /electronics/d after the single quotes space seddemo.txt space greater than sign space nonelectronics.txt Press Enter.
|
cat nonelectronics.txt
|
To see the contents, type:
cat space nonelectronics.txt and press Enter. |
Type
|
Say, at the start of the file we want to add a line Student Information.
For that we have the i action. |
We need to type:
sed space in single quotes '1i space Student Information' seddemo.txt And press Enter. You can see the output. | |
In fact, we can enter multiple lines like this.
Say, we want to add the two lines we would do it in a similar way. Along with Student Information we also want to add academics in the next year.
| |
Type
|
So in that case we would write
Press Enter |
Notice \n between the string ‘Information’ and ‘2013’. \n prints 2013 in the next line after ‘Student Information’ | |
This brings me to the end of this tutorial. | |
Summary | Let us summarize,
In this tutorial we learnt, Substitution Replacement Insertion |
Assignment | As an assignment,
Take the same text file seddemo.txt And try to replace or substitute name Ankit with Ashish |
Display Slide 8
Acknowledgement Slide
|
Watch the video available at the link shown below
It summarises the Spoken Tutorial project If you do not have good bandwidth, you can download and watch it |
Display Slide 9
Spoken Tutorial Workshops
|
The Spoken Tutorial Project Team
Conducts workshops using spoken tutorials Gives certificates to those who pass an online test For more details, please write to contact@spoken-tutorial.org |
Display Slide 10
Acknowledgement
|
Spoken Tutorial Project is a part of the Talk to a Teacher project
It is supported by the National Mission on Education through ICT, MHRD, Government of India More information on this Mission is available at: http://spoken-tutorial.org\NMEICT-Intro |
No Last Slide for tutorials created at IITB
Display the previous slide only and narrate this line. |
The script has been contributed by Sachin Patil.
This is Ashwini PAtil from IIT bombay sighning off. Thank you for joining. |