13,420
edits
Changes
→INVESTIGATION 1: USING THE SED UTILITY
# Issue the following linux command ('''copy and paste''' to save time):<br><span style="color:blue;font-weight:bold;font-family:courier;">wget <nowiki>https://ict.senecacollege.ca/~murray.saul/uli101/data.txt</nowiki></span><br><br>
# Issue the '''more''' command to quickly view the contents of the '''data.txt''' file.<br>When finished, exit the more command by pressing the letter <span style="color:blue;font-weight:bold;font-family:courier;">q</span><br><br>[[Image:sed-1.png|thumb|right|300px|Issuing the '''p''' instruction without using the '''-n''' option (to suppress original output) will display lines twice.]]
# The '''p''' instruction with the '''sed''' command is used to print or display the contents of a text file. Issue the following linux command:<br><span style="color:blue;font-weight:bold;font-family:courier;">sed 'p' data.txt</span><br><br>You should notice that each line appears '''twice'''.<br>The reason why standard output appears twice is that the sed command<br>(without the '''-n option''') displays all lines regardless if they had been specified as a pattern.<br><br>We will use '''pipeline commands''' to both display stdout to the screen and save to files<br>for <u>confirmation</u> of running these pipeline commands when run a '''checking-script''' later in this investigation.<br><br>[[Image:sed-2.png|thumb|right|500px|Using the sed command to display a '''range''' of lines.]]
# Issue the following linux pipeline command:<br><span style="color:blue;font-weight:bold;font-family:courier;">sed -n 'p' data.txt | tee sed-1.txt</span><br><br>What do you notice?<br><br>You can specify an address (''line #'', '''line #s''' or range of '''line #s''') when using the sed utility.<br><br>
# Issue the following linux pipeline command:<br><span style="color:blue;font-weight:bold;font-family:courier;">sed -n '1 p' data.txt | tee sed-2.txt</span><br><br>You should see the first line of the text file displayed.<br><br>[[Image:sed-2.png|thumb|right|500px|Using the sed command to display a '''range''' of lines.]]
# Issue the following linux pipeline command:<br><span style="color:blue;font-weight:bold;font-family:courier;">sed -n '2,5 p' data.txt | tee sed-3.txt</span><br><br>What is displayed? How would you modify the sed command to display the line range 2 to 5?<br><br>The '''s''' instruction is used to substitute patterns (similar to method demonstratedin vi editor).<br><br>
# Issue the following linux pipeline command:<br><span style="color:blue;font-weight:bold;font-family:courier;">sed '2,5 s/TUTORIAL/LESSON/g' data.txt | tee sed-4.txt</span><br><br>What do you notice? View the original contents of lines 2 to 5 in the '''data.txt''' file in another shell to confirm that the substitution occurred.<br><br>The '''q''' instruction terminates or '''quits''' the execution of the sed utility as soon as it read in a particular line or matching pattern.<br><br>