Linux-AWK/C2/Variables-and-Operators-in-awk/English-timed
| |
|
| 00:01 | Hello and welcome to this spoken tutorial on Variables and operators in awk command. |
| 00:07 | In this tutorial, we will learn about-
User defined variables, |
| 00:12 | Operators,
BEGIN and END statements. |
| 00:17 | We will do this through some examples. |
| 00:20 | To record this tutorial, I am using Ubuntu Linux 16.04 |
| 00:26 | To practice this tutorial, you should have gone through the earlier Linux tutorials on this website. |
| 00:33 | You should be familiar with basic operators used in general programming languages like C or C++. |
| 00:41 | If not, then please go through the corresponding tutorials on our website. |
| 00:47 | awk combines the power of a filter and a programming language. |
| 00:52 | So, it supports variables, constants, operators etc. |
| 00:58 | Let’s see what a variable in awk is. |
| 01:02 | A variable is an identifier that references a value. |
| 01:07 | Awk supports both user-defined variables and built-in variables. |
| 01:12 | We will learn about user-defined variables in this tutorial. |
| 01:17 | For user-defined variables, variable declaration is not required. |
| 01:22 | Variables do not have to be initialized explicitly. |
| 01:26 | Awk automatically initializes them to zero or null string. |
| 01:32 | A variable must begin with a letter and continue with letters, digits and underscores.
Variables are case-sensitive. |
| 01:43 | So, Salary with capital “S” and salary with small “s” are two different variables. |
| 01:50 | Let us look at some examples now. |
| 01:53 | Open the terminal by pressing CTRL + ALT and T keys. |
| 01:58 | On the terminal, type- awk space opening single quote opening curly brace small x equal to 1 semicolon capital X equal to within double quotes capital A semicolon small a equal to within double quotes awk semicolon small b equal to within double quotes tutorial.
Press Enter. |
| 02:25 | Type: print x, press Enter. |
| 02:29 | print capital X, press Enter. |
| 02:34 | print a, press Enter. |
| 02:37 | print b, press Enter. |
| 02:40 | print a space b, press Enter. |
| 02:44 | print small x space b, press Enter. |
| 02:49 | print small x plus capital X closing curly brace closing single quote and press Enter. |
| 02:57 | Since we have not given a filename, awk would need some input from standard input. |
| 03:03 | And hence, we can type any letter, say a and then press Enter. |
| 03:10 | This example shows a couple of things.
Variables can be initialized with a number. |
| 03:18 | It can also be initialized with value as a single character or a string. |
| 03:23 | If the value is a character or a string, variable is initialized with value within double quotes. |
| 03:31 | We can see the values of the variables. |
| 03:35 | Observe that small x and capital X are treated as different variables. |
| 03:41 | This proves that variables are case sensitive. |
| 03:45 | Also, it shows how two strings can be concatenated. |
| 03:50 | Here variables small a and small b are concatenated. |
| 03:55 | So, string concatenation operator is simply a space. |
| 04:00 | Similarly, when we concatenate small x which is a number and string b, x is auto-converted into string.
And the concatenated output becomes 1tutorial. |
| 04:13 | Why does the auto-conversion to string happen? |
| 04:16 | That's because awk finds a string concatenation operator space here, between x and b. |
| 04:25 | Now, look at the output of small x plus capital X.
Here, we have the arithmetic operator plus. |
| 04:33 | So, X is auto-converted to numeric zero.
And the addition output becomes numeric 1. |
| 04:42 | Until now, we have seen a couple of operators.
Let’s look at what other operators we can use. |
| 04:49 | A variety of operators can be used in expressions. |
| 04:53 | Please pause the video here and take a look at all the operators mentioned here. |
| 04:58 | I assume you are familiar with these basic operators. |
| 05:02 | If not, then kindly visit our website for tutorials on operators in C and C++ series. |
| 05:09 | I am not going to discuss the working of all these operators in detail. |
| 05:14 | Only exception is the string matching operator which may be new to you.
Let us understand this with an example. |
| 05:23 | A file named awkdemo.txt has been provided in the Code files link.
Please download it on your computer. |
| 05:31 | Switch to the terminal.
Let us end the previous process by pressing Ctrl and D keys. |
| 05:38 | Let me clear the terminal. |
| 05:41 | Now, go to the folder in which you have saved the awkdemo.txt file using the cd command. |
| 05:48 | Let us have a look at this file now. |
| 05:52 | Let's say we want to find the students who have passed but have marks less than 80. |
| 05:58 | In this case, we need to compare two different fields. |
| 06:02 | For such situations, we can use awk's relational operators. |
| 06:07 | These operators can compare both strings and numbers. |
| 06:12 | So, on the terminal, type:
awk space hyphen capital F within double quotes vertical bar space within single quotes dollar 5 equal to equal to within double quotes Pass space ampersand ampersand space dollar 4 less than 80 space within curly braces print space plus plus x comma dollar 2 comma dollar 4 comma dollar 5 space awkdemo.txt and press Enter. |
| 06:54 | This command shows a number of things.
One, we compare a string with the fifth field. |
| 07:01 | Second, we only compare the fourth field with a number. |
| 07:06 | Third, we see that we can join two or more comparisons using ampersand operator. |
| 07:13 | Instead of specific numbers or strings, we can also compare regular expressions. |
| 07:19 | As we have seen in the slide, we have the tilde and the exclamation tilde operators for this purpose. |
| 07:27 | Now suppose, we want to find computer science students who have passed. |
| 07:32 | Since computers can have both a small and capital C, we would use a regular expression. |
| 07:40 | We would type:
awk space hyphen capital F within double quotes pipe symbol space within single quote dollar 5 equal to equal to within double quotes Pass ampersand ampersand space dollar 3 tilde slash within square brackets small c capital C computers slash space within curly braces print space plus plus small x comma dollar 2 comma dollar 3 comma dollar 5 space awkdemo.txt and press Enter. |
| 08:24 | If we want to negate the comparison, we can do so using the exclamation tilde operator. |
| 08:30 | Say, now we want a list of all non-computer students who have passed. |
| 08:35 | Use the up-arrow to get the previous command. |
| 08:39 | Next to dollar 3 add exclamation symbol and press Enter. |
| 08:47 | Next, let's count the number of blank lines in the same file. |
| 08:52 | Open the file and check how many blank lines are there.
So, it has 3 blank lines. |
| 09:00 | Now to count the number of empty lines using awk, type:
awk space within single quote within front slash caret symbol dollar space within curly braces x equal to x plus 1 semicolon space print x space awkdemo.txt Press Enter. |
| 09:26 | We got 3 as our final answer. |
| 09:30 | The caret sign signifies start of a line while dollar signifies the end of a line. |
| 09:37 | Hence, an empty line would be matched by the regular expression caret-dollar. |
| 09:43 | Note, we have not initialized the value of x.
Awk has initialized x to the initial value zero. |
| 09:51 | This command gives us the running count of blank lines.
This is because, every time a blank line is found, x would be incremented and then printed. |
| 10:02 | In our last command, we have seen running count of blank lines.
But, say we only want to print the total number of blank lines. |
| 10:12 | Then we need to print x only once, after the entire file has been traversed. |
| 10:19 | We may also want to give a heading saying what the output means. |
| 10:25 | For such requirements, awk provides the BEGIN and the END sections. |
| 10:30 | The BEGIN section contains procedures for pre-processing. |
| 10:34 | This section is executed before the main input loop is executed. |
| 10:40 | The END section can contain procedures for post-processing. |
| 10:45 | This section is executed after the main input loop has terminated.
The BEGIN and END procedures are optional. |
| 10:55 | Let's learn how to do this.
In the terminal, type: awk space opening single quote BEGIN in caps within curly brace print space within double quotes The number of empty lines in awkdemo are press Enter. |
| 11:14 | within front slash caret symbol dollar symbol space within curly braces x equal to x plus 1
press Enter. |
| 11:26 | end space within curly braces print space x close single quote space awkdemo.txt and press Enter. |
| 11:39 | See, we did not get the desired output!
We should get the output as 3 because we have 3 blank lines in the file. |
| 11:48 | What do you think happened?
Actually, we should have written end as upper case END. |
| 11:54 | So, let us modify the command. |
| 11:57 | Press the up-arrow key to get the previous executed command on the terminal. |
| 12:03 | Now, modify lower case end to upper case END.
And press Enter. |
| 12:11 | Now the total number of empty lines is displayed in the output. |
| 12:16 | Next, let's find the average salary of all the students that we found in the awkdemo.txt file. |
| 12:24 | To get that, type the command as shown in the terminal and press Enter.
And, we get the desired output. |
| 12:35 | This brings us to the end of this tutorial. Let us summarize. |
| 12:40 | In this tutorial, we learnt about:
User defined variables in awk, |
| 12:45 | Operators,
BEGIN and END statements. |
| 12:49 | As an assignment, print every line where the value of the last field is more than 5000.
And, the student belongs to Electrical department. |
| 13:00 | Print the average marks of all the students with the heading “Average marks” in the output. |
| 13:07 | The video at the following link summarises the Spoken Tutorial project.
Please download and watch it. |
| 13:14 | The Spoken Tutorial Project team conducts workshops using spoken tutorials
and gives certificates on passing online test. |
| 13:23 | For more details, please write to us. |
| 13:27 | Do you have questions in THIS Spoken Tutorial?
Please visit this site. |
| 13:32 | Choose the minute and second where you have the question.
Explain your question briefly. Someone from our team will answer them. |
| 13:42 | The Spoken Tutorial forum is for specific questions on this tutorial. |
| 13:47 | Please do not post unrelated and general questions on them. |
| 13:51 | This will help reduce the clutter.
With less clutter, we can use these discussion as instructional material. |
| 13:59 | Spoken Tutorial Project is funded by NMEICT, MHRD, Government of India.
More information on this mission is available at this link. |
| 14:10 | The script has been contributed by Antara and this is Praveen from IIT Bombay, signing off.
Thank you for joining. |