awk is a command-line utility in Linux and Unix-like systems like FreeBSD that is used for text processing. It is particularly useful for working with structured text files, such as CSV or tab-separated files. awk reads input files, line by line, and performs actions based on the contents of each line. It can also perform actions based on the overall structure of the input file.

The basic syntax for awk is:

awk 'pattern { action }' inputfile

Where pattern is a regular expression that defines a condition for a line to be matched, and action is the command to be executed when a line matches the pattern.

Examples:

Print the second field of each line that contains the word “main”:

awk '/main/ { print $2 }' inputfile

Sum all the number in the second column of a file

awk '{ sum += $2 } END { print sum }' inputfile

Print the line number and the current line content

awk '{ print NR, $0 }' inputfile

Print the current line number and the total number of lines in the file

awk 'END { print NR }' inputfile

These are just a few examples of what awk can do. It has many more capabilities, including the ability to use variables, perform arithmetic and string operations, and even call external commands.