This is the first book I have written. It's called Awk One-Liners Explained and it teaches the awk utility through 70 well-explained examples, such as numbering lines in a file, printing certain lines, deleting certain lines, counting words and lines, and others. Get your book copy at: www.catonmat.net/blog/awk-book/
awk is a very versatile programming language for working on text files. It is more powerful than sed but less complex than C. It is an excellent filter and report writer. In this class I will go over the elements and features of gawk, (the Free Software foundation version of awk), examples and a few one-liners.
This is the second book I have written. It's called Sed One-Liners Explained and it teaches the powerful sed UNIX utility. Sed is a text stream editor, meaning it's made for editing text files. In this book I teach you sed through 100 well-explained examples. They include various common tasks you'd do with text files, such as deleting, changing, inserting, printing lines from text files, changing certain words or paragraphs, numbering lines, and it includes various special applications, such as printing email headers, printing the IP address on Linux systems by changing the output of `ifconfig`, and many others. Get your book copy at: www.catonmat.net/blog/sed-book/
Assembly Codes in C Programmes - A Short Notes by Arun Umraossuserd6b1fd
Notes for integration of Assembly language into C programming language. Suitable for novice programmer in C for embedded systems or emulators or simulators.
awk is a very versatile programming language for working on text files. It is more powerful than sed but less complex than C. It is an excellent filter and report writer. In this class I will go over the elements and features of gawk, (the Free Software foundation version of awk), examples and a few one-liners.
This is the second book I have written. It's called Sed One-Liners Explained and it teaches the powerful sed UNIX utility. Sed is a text stream editor, meaning it's made for editing text files. In this book I teach you sed through 100 well-explained examples. They include various common tasks you'd do with text files, such as deleting, changing, inserting, printing lines from text files, changing certain words or paragraphs, numbering lines, and it includes various special applications, such as printing email headers, printing the IP address on Linux systems by changing the output of `ifconfig`, and many others. Get your book copy at: www.catonmat.net/blog/sed-book/
Assembly Codes in C Programmes - A Short Notes by Arun Umraossuserd6b1fd
Notes for integration of Assembly language into C programming language. Suitable for novice programmer in C for embedded systems or emulators or simulators.
GridMate - End to end testing is a critical piece to ensure quality and avoid...ThomasParaiso2
End to end testing is a critical piece to ensure quality and avoid regressions. In this session, we share our journey building an E2E testing pipeline for GridMate components (LWC and Aura) using Cypress, JSForce, FakerJS…
PHP Frameworks: I want to break free (IPC Berlin 2024)Ralf Eggert
In this presentation, we examine the challenges and limitations of relying too heavily on PHP frameworks in web development. We discuss the history of PHP and its frameworks to understand how this dependence has evolved. The focus will be on providing concrete tips and strategies to reduce reliance on these frameworks, based on real-world examples and practical considerations. The goal is to equip developers with the skills and knowledge to create more flexible and future-proof web applications. We'll explore the importance of maintaining autonomy in a rapidly changing tech landscape and how to make informed decisions in PHP development.
This talk is aimed at encouraging a more independent approach to using PHP frameworks, moving towards a more flexible and future-proof approach to PHP development.
Threats to mobile devices are more prevalent and increasing in scope and complexity. Users of mobile devices desire to take full advantage of the features
available on those devices, but many of the features provide convenience and capability but sacrifice security. This best practices guide outlines steps the users can take to better protect personal devices and information.
GraphSummit Singapore | The Art of the Possible with Graph - Q2 2024Neo4j
Neha Bajwa, Vice President of Product Marketing, Neo4j
Join us as we explore breakthrough innovations enabled by interconnected data and AI. Discover firsthand how organizations use relationships in data to uncover contextual insights and solve our most pressing challenges – from optimizing supply chains, detecting fraud, and improving customer experiences to accelerating drug discoveries.
A tale of scale & speed: How the US Navy is enabling software delivery from l...sonjaschweigert1
Rapid and secure feature delivery is a goal across every application team and every branch of the DoD. The Navy’s DevSecOps platform, Party Barge, has achieved:
- Reduction in onboarding time from 5 weeks to 1 day
- Improved developer experience and productivity through actionable findings and reduction of false positives
- Maintenance of superior security standards and inherent policy enforcement with Authorization to Operate (ATO)
Development teams can ship efficiently and ensure applications are cyber ready for Navy Authorizing Officials (AOs). In this webinar, Sigma Defense and Anchore will give attendees a look behind the scenes and demo secure pipeline automation and security artifacts that speed up application ATO and time to production.
We will cover:
- How to remove silos in DevSecOps
- How to build efficient development pipeline roles and component templates
- How to deliver security artifacts that matter for ATO’s (SBOMs, vulnerability reports, and policy evidence)
- How to streamline operations with automated policy checks on container images
Observability Concepts EVERY Developer Should Know -- DeveloperWeek Europe.pdfPaige Cruz
Monitoring and observability aren’t traditionally found in software curriculums and many of us cobble this knowledge together from whatever vendor or ecosystem we were first introduced to and whatever is a part of your current company’s observability stack.
While the dev and ops silo continues to crumble….many organizations still relegate monitoring & observability as the purview of ops, infra and SRE teams. This is a mistake - achieving a highly observable system requires collaboration up and down the stack.
I, a former op, would like to extend an invitation to all application developers to join the observability party will share these foundational concepts to build on:
Transcript: Selling digital books in 2024: Insights from industry leaders - T...BookNet Canada
The publishing industry has been selling digital audiobooks and ebooks for over a decade and has found its groove. What’s changed? What has stayed the same? Where do we go from here? Join a group of leading sales peers from across the industry for a conversation about the lessons learned since the popularization of digital books, best practices, digital book supply chain management, and more.
Link to video recording: https://bnctechforum.ca/sessions/selling-digital-books-in-2024-insights-from-industry-leaders/
Presented by BookNet Canada on May 28, 2024, with support from the Department of Canadian Heritage.
GraphSummit Singapore | The Future of Agility: Supercharging Digital Transfor...Neo4j
Leonard Jayamohan, Partner & Generative AI Lead, Deloitte
This keynote will reveal how Deloitte leverages Neo4j’s graph power for groundbreaking digital twin solutions, achieving a staggering 100x performance boost. Discover the essential role knowledge graphs play in successful generative AI implementations. Plus, get an exclusive look at an innovative Neo4j + Generative AI solution Deloitte is developing in-house.
Alt. GDG Cloud Southlake #33: Boule & Rebala: Effective AppSec in SDLC using ...James Anderson
Effective Application Security in Software Delivery lifecycle using Deployment Firewall and DBOM
The modern software delivery process (or the CI/CD process) includes many tools, distributed teams, open-source code, and cloud platforms. Constant focus on speed to release software to market, along with the traditional slow and manual security checks has caused gaps in continuous security as an important piece in the software supply chain. Today organizations feel more susceptible to external and internal cyber threats due to the vast attack surface in their applications supply chain and the lack of end-to-end governance and risk management.
The software team must secure its software delivery process to avoid vulnerability and security breaches. This needs to be achieved with existing tool chains and without extensive rework of the delivery processes. This talk will present strategies and techniques for providing visibility into the true risk of the existing vulnerabilities, preventing the introduction of security issues in the software, resolving vulnerabilities in production environments quickly, and capturing the deployment bill of materials (DBOM).
Speakers:
Bob Boule
Robert Boule is a technology enthusiast with PASSION for technology and making things work along with a knack for helping others understand how things work. He comes with around 20 years of solution engineering experience in application security, software continuous delivery, and SaaS platforms. He is known for his dynamic presentations in CI/CD and application security integrated in software delivery lifecycle.
Gopinath Rebala
Gopinath Rebala is the CTO of OpsMx, where he has overall responsibility for the machine learning and data processing architectures for Secure Software Delivery. Gopi also has a strong connection with our customers, leading design and architecture for strategic implementations. Gopi is a frequent speaker and well-known leader in continuous delivery and integrating security into software delivery.
Climate Impact of Software Testing at Nordic Testing DaysKari Kakkonen
My slides at Nordic Testing Days 6.6.2024
Climate impact / sustainability of software testing discussed on the talk. ICT and testing must carry their part of global responsibility to help with the climat warming. We can minimize the carbon footprint but we can also have a carbon handprint, a positive impact on the climate. Quality characteristics can be added with sustainability, and then measured continuously. Test environments can be used less, and in smaller scale and on demand. Test techniques can be used in optimizing or minimizing number of tests. Test automation can be used to speed up testing.
The Art of the Pitch: WordPress Relationships and SalesLaura Byrne
Clients don’t know what they don’t know. What web solutions are right for them? How does WordPress come into the picture? How do you make sure you understand scope and timeline? What do you do if sometime changes?
All these questions and more will be explored as we talk about matching clients’ needs with what your agency offers without pulling teeth or pulling your hair out. Practical tips, and strategies for successful relationship building that leads to closing the deal.
Why You Should Replace Windows 11 with Nitrux Linux 3.5.0 for enhanced perfor...SOFTTECHHUB
The choice of an operating system plays a pivotal role in shaping our computing experience. For decades, Microsoft's Windows has dominated the market, offering a familiar and widely adopted platform for personal and professional use. However, as technological advancements continue to push the boundaries of innovation, alternative operating systems have emerged, challenging the status quo and offering users a fresh perspective on computing.
One such alternative that has garnered significant attention and acclaim is Nitrux Linux 3.5.0, a sleek, powerful, and user-friendly Linux distribution that promises to redefine the way we interact with our devices. With its focus on performance, security, and customization, Nitrux Linux presents a compelling case for those seeking to break free from the constraints of proprietary software and embrace the freedom and flexibility of open-source computing.
UiPath Test Automation using UiPath Test Suite series, part 5DianaGray10
Welcome to UiPath Test Automation using UiPath Test Suite series part 5. In this session, we will cover CI/CD with devops.
Topics covered:
CI/CD with in UiPath
End-to-end overview of CI/CD pipeline with Azure devops
Speaker:
Lyndsey Byblow, Test Suite Sales Engineer @ UiPath, Inc.
Essentials of Automations: The Art of Triggers and Actions in FMESafe Software
In this second installment of our Essentials of Automations webinar series, we’ll explore the landscape of triggers and actions, guiding you through the nuances of authoring and adapting workspaces for seamless automations. Gain an understanding of the full spectrum of triggers and actions available in FME, empowering you to enhance your workspaces for efficient automation.
We’ll kick things off by showcasing the most commonly used event-based triggers, introducing you to various automation workflows like manual triggers, schedules, directory watchers, and more. Plus, see how these elements play out in real scenarios.
Whether you’re tweaking your current setup or building from the ground up, this session will arm you with the tools and insights needed to transform your FME usage into a powerhouse of productivity. Join us to discover effective strategies that simplify complex processes, enhancing your productivity and transforming your data management practices with FME. Let’s turn complexity into clarity and make your workspaces work wonders!
Essentials of Automations: The Art of Triggers and Actions in FME
Awk Unix Utility Explained
1. by
@pkrumins
Peteris Krumins
peter@catonmat.net
http://www.catonmat.net
good coders code, great reuse
Preview copy (first 11 pages)
Get full e-book at www.catonmat.net/blog/awk-book/
2. Contents
Contents i
Preface v
1 Introduction 1
1.1 Awk One-Liners . . . . . . . . . . . . . . . . . . . . . . . . . 1
2 Line Spacing 4
2.1 Double-space a file . . . . . . . . . . . . . . . . . . . . . . . 4
2.2 Another way to double-space a file . . . . . . . . . . . . . . 5
2.3 Double-space a file so that no more than one blank line ap-
pears between lines of text . . . . . . . . . . . . . . . . . . . 6
2.4 Triple-space a file . . . . . . . . . . . . . . . . . . . . . . . . 6
2.5 Join all lines . . . . . . . . . . . . . . . . . . . . . . . . . . . 7
3 Numbering and Calculations 8
3.1 Number lines in each file separately . . . . . . . . . . . . . . 8
3.2 Number lines for all files together . . . . . . . . . . . . . . . 8
3.3 Number lines in a fancy manner . . . . . . . . . . . . . . . . 9
3.4 Number only non-blank lines in files . . . . . . . . . . . . . . 9
3.5 Count lines in files . . . . . . . . . . . . . . . . . . . . . . . 9
3.6 Print the sum of fields in every line . . . . . . . . . . . . . . 10
3.7 Print the sum of fields in all lines . . . . . . . . . . . . . . . 10
3.8 Replace every field by its absolute value . . . . . . . . . . . 11
3.9 Count the total number of fields (words) in a file . . . . . . . 11
3.10 Print the total number of lines containing word "Beth" . . . 12
3.11 Find the line containing the largest (numeric) first field . . . 12
3.12 Print the number of fields in each line, followed by the line . 13
3.13 Print the last field of each line . . . . . . . . . . . . . . . . . 13
i
Preview copy (first 11 pages)
Get full e-book at www.catonmat.net/blog/awk-book/
3. CONTENTS ii
3.14 Print the last field of the last line . . . . . . . . . . . . . . . 13
3.15 Print every line with more than 4 fields . . . . . . . . . . . . 14
3.16 Print every line where the value of the last field is greater
than 4 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 14
4 Text Conversion and Substitution 15
4.1 Convert Windows/DOS newlines (CRLF) to Unix newlines
(LF) from Unix . . . . . . . . . . . . . . . . . . . . . . . . . 15
4.2 Convert Unix newlines (LF) to Windows/DOS newlines (CRLF)
from Unix . . . . . . . . . . . . . . . . . . . . . . . . . . . . 16
4.3 Convert Unix newlines (LF) to Windows/DOS newlines (CRLF)
from Windows/DOS . . . . . . . . . . . . . . . . . . . . . . 16
4.4 Convert Windows/DOS newlines (CRLF) to Unix newlines
(LF) from Windows/DOS . . . . . . . . . . . . . . . . . . . 17
4.5 Delete leading whitespace (spaces and tabs) from the begin-
ning of each line (ltrim) . . . . . . . . . . . . . . . . . . . . 18
4.6 Delete trailing whitespace (spaces and tabs) from the end of
each line (rtrim) . . . . . . . . . . . . . . . . . . . . . . . . . 18
4.7 Delete both leading and trailing whitespaces from each line
(trim) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 18
4.8 Insert 5 blank spaces at beginning of each line . . . . . . . . 19
4.9 Align all text to the right right on a 79-column width . . . . 19
4.10 Center all text on a 79-character width . . . . . . . . . . . . 20
4.11 Substitute (find and replace) "foo" with "bar" on each line . 20
4.12 Substitute "foo" with "bar" only on lines that contain "baz" 21
4.13 Substitute "foo" with "bar" only on lines that don’t contain
"baz" . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 22
4.14 Change "scarlet" or "ruby" or "puce" to "red" . . . . . . . . 22
4.15 Reverse order of lines (emulate "tac") . . . . . . . . . . . . . 22
4.16 Join a line ending with a backslash with the next line . . . . 23
4.17 Print and sort the login names of all users . . . . . . . . . . 23
4.18 Print the first two fields in reverse order on each line . . . . 24
4.19 Swap first field with second on every line . . . . . . . . . . . 25
4.20 Delete the second field on each line . . . . . . . . . . . . . . 25
4.21 Print the fields in reverse order on every line . . . . . . . . . 25
4.22 Remove duplicate, consecutive lines (emulate "uniq") . . . . 26
4.23 Remove duplicate, nonconsecutive lines . . . . . . . . . . . . 27
4.24 Concatenate every 5 lines of input with a comma . . . . . . 28
Preview copy (first 11 pages)
Get full e-book at www.catonmat.net/blog/awk-book/
4. CONTENTS iii
5 Selective Printing and Deleting of Certain Lines 30
5.1 Print the first 10 lines of a file (emulates "head -10") . . . . 30
5.2 Print the first line of a file (emulates "head -1") . . . . . . . 31
5.3 Print the last 2 lines of a file (emulates "tail -2") . . . . . . 31
5.4 Print the last line of a file (emulates "tail -1") . . . . . . . . 32
5.5 Print only the lines that match a regular expression "/regex/"
(emulates "grep") . . . . . . . . . . . . . . . . . . . . . . . . 32
5.6 Print only the lines that do not match a regular expression
"/regex/" (emulates "grep -v") . . . . . . . . . . . . . . . . 33
5.7 Print the line immediately before a line that matches "/regex/" 33
5.8 Print the line immediately after a line that matches "/regex/"
(but not the line that matches itself) . . . . . . . . . . . . . 34
5.9 Print lines that match any of "AAA" or "BBB", or "CCC" . 34
5.10 Print lines that contain "AAA", "BBB", and "CCC" in this
order . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 34
5.11 Print only the lines that are 65 characters in length or longer 35
5.12 Print only the lines that are less than 64 characters in length 35
5.13 Print a section of file from regular expression to end of file . 36
5.14 Print lines 8 to 12 (inclusive) . . . . . . . . . . . . . . . . . 36
5.15 Print line number 52 . . . . . . . . . . . . . . . . . . . . . . 36
5.16 Print section of a file between two regular expressions (inclu-
sive) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 37
5.17 Print all lines where 5th field is equal to "abc123" . . . . . . 37
5.18 Print any line where field #5 is not equal to "abc123" . . . . 38
5.19 Print all lines whose 7th field matches a regular expression . 38
5.20 Print all lines whose 7th field doesn’t match a regular ex-
pression . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 38
5.21 Delete all blank lines from a file . . . . . . . . . . . . . . . . 39
6 String and Array Creation 40
6.1 Create a string of a specific length (generate a string of x’s
of length 513) . . . . . . . . . . . . . . . . . . . . . . . . . . 40
6.2 Insert a string of specific length at a certain character posi-
tion (insert 49 x’s after 6th char) . . . . . . . . . . . . . . . 41
6.3 Create an array from string . . . . . . . . . . . . . . . . . . 42
6.4 Create an array named "mdigit", indexed by strings . . . . . 42
A Awk Special Variables 44
Preview copy (first 11 pages)
Get full e-book at www.catonmat.net/blog/awk-book/
5. CONTENTS iv
A.1 FS – Input Field Separator . . . . . . . . . . . . . . . . . . . 44
A.2 OFS – Output Field Separator . . . . . . . . . . . . . . . . . 45
A.3 NF – Number of Fields on the current line . . . . . . . . . . 46
A.4 NR – Number of records seen so far (current line number) . 47
A.5 RS – Input Record Separator . . . . . . . . . . . . . . . . . 47
A.6 ORS – Output Record Separator . . . . . . . . . . . . . . . 48
B Idiomatic Awk 49
Index 51
Preview copy (first 11 pages)
Get full e-book at www.catonmat.net/blog/awk-book/
6. Preface
Thanks!
Thank you for purchasing my "Awk One-Liners Explained" e-book! This is
my first e-book that I have ever written and I based it on article series "Fa-
mous Awk One-Liners Explained" that I wrote on my www.catonmat.net
blog. I went through all the one-liners in the articles, improved them, fixed
a lot of mistakes, added an introduction to Awk one-liners and two new
chapters. The two new chapters are Awk Special Variables that summa-
rizes some of the most commonly used Awk variables and Idiomatic Awk
that explains what idiomatic Awk is.
You might wonder why I called the article series "famous"? Well, be-
cause I based the articles on the famous awk1line.txt file by Eric Pement.
This file has been circulating around Unix newsgroups and forums for years
and it’s very popular among Unix programmers. That’s how I actually
learned the Awk language myself. I went through all the one-liners in this
file, tried them out and understood how they exactly work. Then I thought
it would be a good idea to explain them on my blog, which I did, and after
that I thought, why not turn it into a book? That’s how I ended up writing
this book.
I have also planned writing two more books called "Sed One-Liners
Explained" and "Perl One-Liners Explained". The sed book will be based
on Eric Pement’s sed1line.txt file and "Famous Sed One-Liners Explained"
article series and the Perl book will be based on my "Famous Perl One-
Liners Explained" article series. I am also going to create perl1line.txt file
of my own. If you’re interested, subscribe to my blog and follow me on
Twitter. That way you’ll know when I publish all of this!
v
Preview copy (first 11 pages)
Get full e-book at www.catonmat.net/blog/awk-book/
7. PREFACE vi
Credits
I’d like to thank Eric Pement who made the famous awk1line.txt file that
I learned Awk from and that I based this book on. I’d also like to thank
waldner and pgas from #awk channel on FreeNode IRC network for always
helping me with Awk, Madars Virza for proof reading the book before
I published it and correcting several glitches, Antons Suspans for proof
reading the book after I published it, Abraham Alhashmy for giving advice
on how to improve the design of the book, everyone who commented on my
blog while I was writing the Awk one-liners article series, and everyone else
who helped me with Awk and this book.
Preview copy (first 11 pages)
Get full e-book at www.catonmat.net/blog/awk-book/
8. One
Introduction
1.1 Awk One-Liners
Knowing Awk makes you really powerful when working in the shell. Check
this out, suppose you want to print the usernames of all users on your
system. You can do it very quickly with this one-liner:
awk -F: '{print $1}' /etc/passwd
This is really short and powerful, isn’t it? As you know, the format of
/etc/passwd is colon separated:
root:x:0:0:0:/root:/bin/bash
The one-liner above says: Take each line from /etc/passwd, split it on
the colon -F: and print the first field $1 of each line.
Here are the first few lines of output when I run this program on my
system:
root
bin
daemon
adm
lp
sync
...
Exactly what I expected.
1
Preview copy (first 11 pages)
Get full e-book at www.catonmat.net/blog/awk-book/
9. CHAPTER 1. INTRODUCTION 2
Now compare it to a C program that I just wrote that does the same:
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#define MAX_LINE_LEN 1024
int main() {
char line[MAX_LINE_LEN];
FILE *in = fopen("/etc/passwd", "r");
if (!in) exit(EXIT_FAILURE);
while (fgets(line, MAX_LINE_LEN, in) != NULL) {
char *sep = strchr(line, ':');
if (!sep) exit(EXIT_FAILURE);
*sep = '0';
printf("%sn", line);
}
fclose(in);
return EXIT_SUCCESS;
}
This is much longer and you have to compile the program, only then
you can run it. If you make any mistakes, you have to recompile again.
That’s why one-liners are called one-liners. They are short, easy to write
and they do one and only one thing really well. I am pretty sure you’re
starting to see how mastering Awk and one-liners can make you much more
efficient when working in the shell, with text files and with computers in
general.
Here is another one-liner, this one numbers the lines in some file:
awk '{ print NR ". " $0 }' somefile
Isn’t this beautiful? The NR special variable keeps track of current line
number so I just print it out, followed by a dot and $0 that, as you’ll learn,
contains the whole line. And you’re done.
Preview copy (first 11 pages)
Get full e-book at www.catonmat.net/blog/awk-book/
10. CHAPTER 1. INTRODUCTION 3
I know that a lot of my book readers would argue that Perl does exactly
the same, so why should you learn Awk? My answer is very simple, yes,
Perl does exactly the same, but why not be the master of the shell? Why
not learn Awk, sed, Perl and other utilities? Besides Perl was created based
on ideas from Awk, so why not learn Awk to see how Perl evolved. That
gives you a unique perspective on programming languages, doesn’t it?
Overall, this book contains 70 well explained one-liners. Once you go
through them, you should have a really good understanding of Awk and
you’ll be the master shell problem solver. Enjoy this book!
Preview copy (first 11 pages)
Get full e-book at www.catonmat.net/blog/awk-book/
11. Two
Line Spacing
2.1 Double-space a file
awk '1; { print "" }'
So how does this one-liner work? A one-liner is an Awk program and
every Awk program consists of a sequence of pattern-action statements
pattern { action statement }. In this case there are two statements 1
and { print "" }. In a pattern-action statement either the pattern or the
action may be missing. If the pattern is missing, the action is applied to
every single line of input. A missing action is equivalent to { print }. The
first pattern-action statement is missing the action, therefore we can rewrite
it as:
awk '1 { print }; { print "" }'
An action is applied to the line only if the pattern matches, i.e., pattern
is true. Since 1 is always true, this one-liner translates further into two
print statements:
awk '{ print }; { print "" }'
Every print statement in Awk is silently followed by the ORS – Output
Record Separator variable, which is a newline by default. The first print
statement with no arguments is equivalent to print $0, where $0 is the
variable holding the entire line (not including the newline at the end). The
second print statement seemingly prints nothing, but knowing that each
print statement is followed by ORS, it actually prints a newline. So there we
have it, each line gets double-spaced.
4
Preview copy (first 11 pages)
Get full e-book at www.catonmat.net/blog/awk-book/
12. This is only the e-book preview.
Get the full e-book at:
http://www.catonmat.net/blog/awk-book/