Tutorial11: Sed & Awk Utilities
Contents
USING SED & AWK UTILTIES
Main Objectives of this Practice Tutorial
- Learn how to issue the sed command to manipulate text contained in a file.
- List and understand several instructions associated with the sed command.
- Use the sed command as a filter to manipulate text
- Learn how to issue the awk command to manipulate text contained in a file.
- Use the awk command as a filter to manipulate text
Tutorial Reference Material
Course Notes |
Linux Command/Shortcut Reference |
YouTube Videos | ||
Course Notes:
|
Text Manipulation | Man Pages
|
Brauer Instructional Videos: |
KEY CONCEPTS
Using the sed Utility
Usage:
Syntax: sed [-n] 'address instruction' filename
Address:
- can use a line number, to select a specific line (for example: 5)
- can specify a range of line numbers (for example: 5,7)
- can specify a regular expression to select all lines that match (e.g /^happy[0-9]/)
- Note: when using regular expressions, you must delimit them with a forward-slash"/"
default address (if none is specified) will match every line
Instruction:
- Action to take for matched line(s)
- Refer to table on right-side for list of some common instructions and their purpose
Using the awk Utility
Usage:
awk options 'selection _criteria {action }’ file-name
Note:
- The awk command reads all lines in the input file and will be exposed to the expression (contained within quotes) for processing.
- Expression (contained in quotes) represents selection criteria, and action to execute (contained within braces) if selection criteria is matched
- If no pattern is specified, awk selects all lines in the input
- If no action is specified, awk copies the selected lines to standard output
Patterns: Regular Expressions
- You can use a regular expression, enclosed within slashes, as a pattern.
- The ~ operator tests whether a field or variable matches a regular expression
- The !~ operator tests for no match.
- You can perform both numeric and string comparisons using relational operators
- You can combine any of the patterns using the Boolean operators || (OR) and && (AND)
Patterns: Relational Operators
- The following operators (in the table on the right-side) can be used with the awk utility to pattern searching.
- Since those symbols are used within the expression, they are NOT confused with redirection symbols.
INVESTIGATION 1: USING THE SED UTILITY
In this section, you will learn how to manipulate text...
Perform the Following Steps:
- Login your matrix account.
- Issue a command to confirm you are located in your home directory.
- Issue the following linux command (copy and paste to save time):
wget https://ict.senecacollege.ca/~murray.saul/uli101/data.txt - Issue the more command to quickly view the contents of the data.txt file.
When finished, exit the more command by pressing the letter q - The p command in sed is used to print or display the contents of a text file.
Issue the following linux command:
sed 'p' data.txt
You should notice that each line appears twice. The reason why standard output appears twice is that the sed command (without the -n option) displays all lines regardless if they had been specified as a pattern. - Issue the following linux command:
sed -n 'p' data.txt
What do you notice?
You can specify an address (line #, line #s or range of line #s) when using the sed utility. - Issue the following linux command:
sed -n '1 p' data.txt
You should see the first line of the text file displayed. - Issue the following linux command:
sed -n '2,5 p' data.txt
What do you think is displayed? (compare with contents in the data.txt text file to confirm). - x
In the next investigation, you will ...
INVESTIGATION 2: USING THE AWK UTILITY
In this section, you will learn how to ...
Perform the Following Steps:
- x
In the next investigation, you will ...
LINUX PRACTICE QUESTIONS
The purpose of this section is to obtain extra practice to help with quizzes, your midterm, and your final exam.
Here is a link to the MS Word Document of ALL of the questions displayed below but with extra room to answer on the document to simulate a quiz:
https://ict.senecacollege.ca/~murray.saul/uli101/uli101_week11_practice.docx
Your instructor may take-up these questions during class. It is up to the student to attend classes in order to obtain the answers to the following questions. Your instructor will NOT provide these answers in any other form (eg. e-mail, etc).
Review Questions:
Part A: Display Results from Using the sed Utility
Note the contents from the following tab-delimited file called ~murray.saul/uli101/stuff.txt: (this file pathname exists for checking your work)
Line one. This is the second line. This is the third. This is line four. Five. Line six follows Followed by 7 Now line 8 and line nine Finally, line 10
Write the results of each of the following Linux commands for the above-mentioned file:
- sed -n '3,6 p' ~murray.saul/uli101/stuff.txt
- sed '4 q' ~murray.saul/uli101/stuff.txt
- sed '/the/ d' ~murray.saul/uli101/stuff.txt
- sed 's/line/NUMBER/g' ~murray.saul/uli101/stuff.txt
Part B: Writing Linux Commands Using the sed Utility
Write a single Linux command to perform the specified tasks for each of the following questions.
- Write a Linux sed command to display only lines 5 to 9 for the file: ~murray.saul/uli101/stuff.txt
- Write a Linux sed command to display only lines the begin the pattern “and” for the file: ~murray.saul/uli101/stuff.txt
- Write a Linux sed command to display only lines that end with a digit for the file: ~murray.saul/uli101/stuff.txt
- Write a Linux sed command to save lines that match the pattern “line” (upper or lowercase) for the file: ~murray.saul/uli101/stuff.txt and save results (overwriting previous contents) to: ~/results.txt
Part C: Writing Linux Commands Using the awk Utility
Note the contents from the following tab-delimited file called ~murray.saul/uli101/stuff.txt: (this file pathname exists for checking your work)
Line one. This is the second line. This is the third. This is line four. Five. Line six follows Followed by 7 Now line 8 and line nine Finally, line 10
Write the results of each of the following Linux commands for the above-mentioned file:
- awk ‘NR == 3 {print}’ ~murray.saul/uli101/stuff.txt
- awk ‘NR >= 2 && NR <= 5 {print}’ ~murray.saul/uli101/stuff.txt
- awk ‘$1 ~ /This/ {print $2}’ ~murray.saul/uli101/stuff.txt
- awk ‘$1 ~ /This/ {print $3,$2}’ ~murray.saul/uli101/stuff.txt
Part D: Writing Linux Commands Using the awk Utility
Write a single Linux command to perform the specified tasks for each of the following questions.
- Write a Linux awk command to display all records for the file: ~/cars whose fifth field is greater than 10000.
- Write a Linux awk command to display the first and fourth fields for the file: ~/cars whose fifth field begins with a number.
- Write a Linux awk command to display the second and third fields for the file: ~/cars for records that match the pattern “chevy”.
- Write a Linux awk command to display the first and second fields for all the records contained in the file: ~/cars