Awk

The awk command-line utility processes text input one line at a time. The basic syntax for an awk command is:

awk 'pattern {action}' <input-file>

We'll try it with some sample data:

$ cat data.txt
John        Doe         Engineer
Dave        Smith       Teacher
Jane        Doe         Plumber
Barney      Smith       Politician

The simplest action is to print each line:

$ awk '{print}' data.txt
John        Doe         Engineer
Dave        Smith       Teacher
Jane        Doe         Plumber
Barney      Smith       Politician

Awk breaks each line into whitespace-separated fields, numbered $1, $2, $3, etc.

$ awk '{print $1, $2}' data.txt
John Doe
Dave Smith
Jane Doe
Barney Smith

The $0 variable contains the full line:

$ awk '{print $0}' data.txt
John        Doe         Engineer
Dave        Smith       Teacher
Jane        Doe         Plumber
Barney      Smith       Politician

The NR variable contains the current line number:

$ awk '{print NR ":", $1, $2}' data.txt
1: John Doe
2: Dave Smith
3: Jane Doe
4: Barney Smith

Specify a regex to print only matching lines:

$ awk '/Smith/ {print $1, $2}' data.txt
Dave Smith
Barney Smith