<?xml version="1.0"?>
<?xml-stylesheet type="text/css" href="https://script.spoken-tutorial.org/skins/common/feed.css?303"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en">
		<id>https://script.spoken-tutorial.org/index.php?action=history&amp;feed=atom&amp;title=BOSS-Linux%2FC3%2FBasics-of-awk%2FEnglish</id>
		<title>BOSS-Linux/C3/Basics-of-awk/English - Revision history</title>
		<link rel="self" type="application/atom+xml" href="https://script.spoken-tutorial.org/index.php?action=history&amp;feed=atom&amp;title=BOSS-Linux%2FC3%2FBasics-of-awk%2FEnglish"/>
		<link rel="alternate" type="text/html" href="https://script.spoken-tutorial.org/index.php?title=BOSS-Linux/C3/Basics-of-awk/English&amp;action=history"/>
		<updated>2026-04-19T08:53:18Z</updated>
		<subtitle>Revision history for this page on the wiki</subtitle>
		<generator>MediaWiki 1.23.17</generator>

	<entry>
		<id>https://script.spoken-tutorial.org/index.php?title=BOSS-Linux/C3/Basics-of-awk/English&amp;diff=19754&amp;oldid=prev</id>
		<title>PoojaMoolya: Created page with &quot;'''Title of script''': The Awk Command  '''Author: Sachin Patil and Anirban'''  '''Keywords: Selection criteria, action, formatted printing, fields, Regular expressions, Varia...&quot;</title>
		<link rel="alternate" type="text/html" href="https://script.spoken-tutorial.org/index.php?title=BOSS-Linux/C3/Basics-of-awk/English&amp;diff=19754&amp;oldid=prev"/>
				<updated>2015-01-29T07:34:00Z</updated>
		
		<summary type="html">&lt;p&gt;Created page with &amp;quot;&amp;#039;&amp;#039;&amp;#039;Title of script&amp;#039;&amp;#039;&amp;#039;: The Awk Command  &amp;#039;&amp;#039;&amp;#039;Author: Sachin Patil and Anirban&amp;#039;&amp;#039;&amp;#039;  &amp;#039;&amp;#039;&amp;#039;Keywords: Selection criteria, action, formatted printing, fields, Regular expressions, Varia...&amp;quot;&lt;/p&gt;
&lt;p&gt;&lt;b&gt;New page&lt;/b&gt;&lt;/p&gt;&lt;div&gt;'''Title of script''': The Awk Command&lt;br /&gt;
&lt;br /&gt;
'''Author: Sachin Patil and Anirban'''&lt;br /&gt;
&lt;br /&gt;
'''Keywords: Selection criteria, action, formatted printing, fields, Regular expressions, Variables'''&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{| style=&amp;quot;border-spacing:0;&amp;quot;&lt;br /&gt;
| style=&amp;quot;border:1pt solid #000000;padding:0.097cm;&amp;quot;| &amp;lt;center&amp;gt;'''Visual Cue'''&amp;lt;/center&amp;gt;&lt;br /&gt;
| style=&amp;quot;border:1pt solid #000000;padding:0.097cm;&amp;quot;| &amp;lt;center&amp;gt;'''Narration'''&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;border:1pt solid #000000;padding:0.097cm;&amp;quot;| Display Slide 1&lt;br /&gt;
| style=&amp;quot;border:1pt solid #000000;padding:0.097cm;&amp;quot;| Welcome to the spoken tutorial on the '''awk''' command.&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;border:1pt solid #000000;padding:0.176cm;&amp;quot;| Display Slide 2&lt;br /&gt;
&lt;br /&gt;
Learning Objective&lt;br /&gt;
| style=&amp;quot;border:1pt solid #000000;padding:0.176cm;&amp;quot;| In this tutorial we will learn,&lt;br /&gt;
&lt;br /&gt;
'''awk command.'''&lt;br /&gt;
&lt;br /&gt;
We will do this through some examples.&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;border:1pt solid #000000;padding:0.176cm;&amp;quot;| Display Slide 3&lt;br /&gt;
&lt;br /&gt;
System requirement&lt;br /&gt;
| style=&amp;quot;border:1pt solid #000000;padding:0.176cm;&amp;quot;| To record this tutorial, I am using&lt;br /&gt;
&lt;br /&gt;
*Linux Operating system&lt;br /&gt;
*GNU BASH v. 4.2.24&lt;br /&gt;
&lt;br /&gt;
Please note, GNU Bash version 4 or above is recommended to practice this tutorial.&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;border:1pt solid #000000;padding:0.097cm;&amp;quot;| Display Slide 4&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Introduction&lt;br /&gt;
| style=&amp;quot;border:1pt solid #000000;padding:0.097cm;&amp;quot;| Let us start with an introduction to '''awk'''.&lt;br /&gt;
&lt;br /&gt;
The''' awk''' command is a very powerful text manipulation tool.&lt;br /&gt;
&lt;br /&gt;
It is named after its authors, '''Aho, Weinberger''' and '''Kernighan'''.&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;border:1pt solid #000000;padding:0.097cm;&amp;quot;| Continue Slide &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
| style=&amp;quot;border:1pt solid #000000;padding:0.097cm;&amp;quot;| It can perform several functions. &lt;br /&gt;
&lt;br /&gt;
It operates at the field level of a record. &lt;br /&gt;
&lt;br /&gt;
So, it can easily access and edit the individual fields of the record.&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;border:1pt solid #000000;padding:0.097cm;&amp;quot;| &lt;br /&gt;
| style=&amp;quot;border:1pt solid #000000;padding:0.097cm;&amp;quot;| Let us see some examples. &lt;br /&gt;
&lt;br /&gt;
For demonstration purpose, we use the''' awkdemo.txt '''file. &lt;br /&gt;
&lt;br /&gt;
Let us see the contents of '''awkdemo.txt''' file.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;border:1pt solid #000000;padding:0.176cm;&amp;quot;| Now open the '''terminal''' window&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
type:&lt;br /&gt;
| style=&amp;quot;border:1pt solid #000000;padding:0.097cm;&amp;quot;| Now open the terminal window&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;border:1pt solid #000000;padding:0.097cm;&amp;quot;| type:&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;quot;awk '/Pass/ {print}' awkdemo.txt&amp;lt;nowiki&amp;gt;&amp;quot; [&amp;lt;/nowiki&amp;gt;enter]&lt;br /&gt;
| style=&amp;quot;border:1pt solid #000000;padding:0.097cm;&amp;quot;| Let us see how to print using '''awk command.''' &lt;br /&gt;
&lt;br /&gt;
Type:&lt;br /&gt;
&lt;br /&gt;
'''awk space''' (within single quote) (front slash) ‘'''/Pass '''(front slash)'''/'''(opening curly bracket) '''{print (closing curly bracket)}''' (after the  quotes) '''space awkdemo.txt''' &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Press '''Enter'''&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;border:1pt solid #000000;padding:0.097cm;&amp;quot;|&lt;br /&gt;
| style=&amp;quot;border:1pt solid #000000;padding:0.097cm;&amp;quot;|Here '''Pass''' is the selection criterion. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
All the lines of the '''awkdemo''' where '''Pass''' occurs are printed. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
The action here is print. &lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;border:1pt solid #000000;padding:0.097cm;&amp;quot;| Type&lt;br /&gt;
&lt;br /&gt;
&amp;quot;awk '/M&amp;lt;nowiki&amp;gt;[&amp;lt;/nowiki&amp;gt;ei]*ra&amp;lt;nowiki&amp;gt;*/ {&amp;lt;/nowiki&amp;gt;print}' awkdemo.txt&amp;lt;nowiki&amp;gt;&amp;quot; [&amp;lt;/nowiki&amp;gt;enter]&lt;br /&gt;
| style=&amp;quot;border:1pt solid #000000;padding:0.097cm;&amp;quot;| We can also use '''regular expressions''' in '''awk'''&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Say we want to print records of students with name '''Mira.'''&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;border:1pt solid #000000;padding:0.097cm;&amp;quot;|&lt;br /&gt;
| style=&amp;quot;border:1pt solid #000000;padding:0.097cm;&amp;quot;|We would type:&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''awk space '/M opening square bracket [ ei closing square bracket ]*ra */{ print}' space awkdemo.txt'''&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Press '''Enter.'''&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;border:1pt solid #000000;padding:0.097cm;&amp;quot;|&lt;br /&gt;
| style=&amp;quot;border:1pt solid #000000;padding:0.097cm;&amp;quot;| '''&amp;quot;*&amp;quot;'''  will give one or more occurrences of previous character.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Thus entries with more than one occurrence for '''i, e''' and '''a''' will be listed.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
For ex. &lt;br /&gt;
*Mira (with M I R A)&lt;br /&gt;
*Meera (with M E E R A)&lt;br /&gt;
*Meeraa (with M E E R A A )&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;border:1pt solid #000000;padding:0.097cm;&amp;quot;| &lt;br /&gt;
| style=&amp;quot;border:1pt solid #000000;padding:0.097cm;&amp;quot;| '''awk''' supports the '''extended regular expressions (ERE)'''.&lt;br /&gt;
&lt;br /&gt;
Which means we can match multiple patterns separated by a '''PIPE'''.&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;border:1pt solid #000000;padding:0.097cm;&amp;quot;| Type&lt;br /&gt;
&lt;br /&gt;
&amp;quot;awk '/civil|electrical/ {print}' awkdemo&amp;lt;nowiki&amp;gt;&amp;quot; [&amp;lt;/nowiki&amp;gt;enter]&lt;br /&gt;
| style=&amp;quot;border:1pt solid #000000;padding:0.097cm;&amp;quot;| Now type:&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''awk space (within single quotes)(front slash) ‘/civil (vertical bar)'''|electrical '''(front slash)'''/{print}'''' '''awkdemo.txt'''&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Press '''Enter.'''&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Now entries for both '''civil''' and '''electrical''' are shown.&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;border:1pt solid #000000;padding:0.097cm;&amp;quot;| Display slide 7&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
| style=&amp;quot;border:1pt solid #000000;padding:0.097cm;&amp;quot;| Let us go back to our slides. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''awk''' has some special parameters to identify individual fields of a line. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''$1(Dollar 1)''' would indicate the first field. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Similarly we can have '''$2, $3''' and so on for respective fields. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''$0''' represents the entire line.&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;border:1pt solid #000000;padding:0.176cm;&amp;quot;| Switch to the terminal&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Type: cat awkdemo.txt&lt;br /&gt;
| style=&amp;quot;border:1pt solid #000000;padding:0.176cm;&amp;quot;| Come back to our terminal. Note that each word is separated by '''PIPE''' in the file '''awkdemo.txt.'''&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
In this case '''PIPE '''is called a '''delimiter.'''&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
A '''delimiter''' separates words from each other.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
A '''delimiter''' can also be a single '''whitespace. '''&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
To specify a '''delimiter''', we have to give '''- capital F '''flag followed by a '''delimiter'''.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;border:1pt solid #000000;padding:0.176cm;&amp;quot;| Type&lt;br /&gt;
&lt;br /&gt;
“awk -F &amp;quot;|&amp;quot; '/civil|electrical/ {print $0}' awkdemo&amp;lt;nowiki&amp;gt; ” [&amp;lt;/nowiki&amp;gt;enter]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
| style=&amp;quot;border:1pt solid #000000;padding:0.176cm;&amp;quot;| &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Let us see, &lt;br /&gt;
&lt;br /&gt;
'''awk space minus capital F space''' within double quotes''' PIPE space''' within single quote '''front slash civil PIPE electrical front slash ''' within curly braces''' print space dollar0 space awkdemo.txt'''&lt;br /&gt;
&lt;br /&gt;
Press '''Enter'''&lt;br /&gt;
&lt;br /&gt;
This print the entire line since we have used '''$0.'''&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;border:1pt solid #000000;padding:0.097cm;&amp;quot;| Type&lt;br /&gt;
&lt;br /&gt;
“awk -F&amp;quot;|&amp;quot; '/Pass/ {print $2, $3}' awkdemo&amp;lt;nowiki&amp;gt;” [&amp;lt;/nowiki&amp;gt;enter]&lt;br /&gt;
| style=&amp;quot;border:1pt solid #000000;padding:0.097cm;&amp;quot;| Notice that, '''names''' and '''stream of students''' are the second and third fields.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;border:1pt solid #000000;padding:0.097cm;&amp;quot;|&lt;br /&gt;
| style=&amp;quot;border:1pt solid #000000;padding:0.097cm;&amp;quot;|Say we only want to print two fields.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
We will replace '''$0''' with '''$2 and$3''' in the above command.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Press '''Enter '''&lt;br /&gt;
&lt;br /&gt;
Only two fields are shown.&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;border:1pt solid #000000;padding:0.097cm;&amp;quot;| &lt;br /&gt;
| style=&amp;quot;border:1pt solid #000000;padding:0.097cm;&amp;quot;| Though it gives the right result, the display is all jagged and unformatted. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;border:1pt solid #000000;padding:0.176cm;&amp;quot;| “awk -F&amp;quot;|&amp;quot; '/Pass/ {printf &amp;quot;%4d %-25s %-15s \n&amp;quot;,&lt;br /&gt;
&lt;br /&gt;
NR,$2,$3 }' awkdemo” &amp;lt;nowiki&amp;gt;[&amp;lt;/nowiki&amp;gt;enter]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
| style=&amp;quot;border:1pt solid #000000;padding:0.176cm;&amp;quot;| We can provide formatted output by using the '''C''' style '''printf '''statement. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
We can also provide a serial number by using a builtin variable '''NR'''. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
We will see more about builtin variables later.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Now type:&lt;br /&gt;
&lt;br /&gt;
'''awk''' space '''-F”|”''' space ''''/Pass/{printf “%4d %-25s %-15s \n”,''' '''NR,$2,$3 }'''' space '''awkdemo.txt''' &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Press Enter.'''&lt;br /&gt;
&lt;br /&gt;
We see the difference.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Here the '''NR''' stands for number of records. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Records are '''integers''', hence we have written''' %d'''. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Name''' and '''Stream''' are '''strings'''. So we have used '''%s'''. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Here '''25s''' will reserve 25 spaces for '''Name''' field.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''15s''' will reserve for '''Stream''' field.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
The '''minus sign''' is used to left justify the output.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;border:1pt solid #000000;padding:0.097cm;&amp;quot;| Display Slide 8&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
|style=&amp;quot;border:1pt solid #000000;padding:0.176cm;&amp;quot;| This brings us to the end of this tutorial.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Let us move back to our slides.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Let us summarize.&lt;br /&gt;
&lt;br /&gt;
In this tutorial we learnt&lt;br /&gt;
&lt;br /&gt;
To print using awk&lt;br /&gt;
&lt;br /&gt;
Regular expression in awk&lt;br /&gt;
&lt;br /&gt;
To list the enteries for a paritcular stream&lt;br /&gt;
&lt;br /&gt;
To list only the second and the third fileds&lt;br /&gt;
&lt;br /&gt;
To display a formatted output&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;border:1pt solid #000000;padding:0.097cm;&amp;quot;| Display Slide 9&lt;br /&gt;
&lt;br /&gt;
| style=&amp;quot;border:1pt solid #000000;padding:0.176cm;&amp;quot; | As an assignment &lt;br /&gt;
&lt;br /&gt;
Display roll no., stream and marks of Ankti Saraf&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;border:1pt solid #000000;padding:0.097cm;&amp;quot;| Display Slide 10&lt;br /&gt;
&lt;br /&gt;
Acknowledgement Slide&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
| style=&amp;quot;border:1pt solid #000000;padding:0.097cm;&amp;quot;| Watch the video available at the link shown below&lt;br /&gt;
&lt;br /&gt;
It summarises the Spoken Tutorial project&lt;br /&gt;
&lt;br /&gt;
If you do not have good bandwidth, you can download and watch it&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;border:1pt solid #000000;padding:0.176cm;&amp;quot;| Display Slide 11&lt;br /&gt;
&lt;br /&gt;
Spoken Tutorial Workshops&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
| style=&amp;quot;border:1pt solid #000000;padding:0.176cm;&amp;quot;| The Spoken Tutorial Project Team&lt;br /&gt;
&lt;br /&gt;
Conducts workshops using spoken tutorials&lt;br /&gt;
&lt;br /&gt;
Gives certificates to those who pass an online test&lt;br /&gt;
&lt;br /&gt;
For more details, please write to&lt;br /&gt;
&lt;br /&gt;
contact@spoken-tutorial.org&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;border:1pt solid #000000;padding:0.176cm;&amp;quot;| Display Slide 12&lt;br /&gt;
&lt;br /&gt;
Acknowledgement&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
| style=&amp;quot;border:1pt solid #000000;padding:0.176cm;&amp;quot;| Spoken Tutorial Project is a part of the Talk to a Teacher project&lt;br /&gt;
&lt;br /&gt;
It is supported by the National Mission on Education through ICT, MHRD, Government of India&lt;br /&gt;
&lt;br /&gt;
More information on this Mission is available at: [http://spoken-tutorial.org/ http][http://spoken-tutorial.org/ ://][http://spoken-tutorial.org/ spoken][http://spoken-tutorial.org/ -][http://spoken-tutorial.org/ tutorial][http://spoken-tutorial.org/ .][http://spoken-tutorial.org/ org]\NMEICT-Intro&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;border-top:none;border-bottom:1pt solid #000000;border-left:1pt solid #000000;border-right:1pt solid #000000;padding:0.176cm;&amp;quot;| No Last Slide for tutorials created at IITB &lt;br /&gt;
&lt;br /&gt;
Display the previous slide only and narrate this line.&lt;br /&gt;
| style=&amp;quot;border-top:none;border-bottom:1pt solid #000000;border-left:1pt solid #000000;border-right:1pt solid #000000;padding:0.176cm;&amp;quot;| This is Ashwini Patil from IIT Bombay signning off. Thank you for joining.&lt;br /&gt;
&lt;br /&gt;
|}&lt;/div&gt;</summary>
		<author><name>PoojaMoolya</name></author>	</entry>

	</feed>