awk
Commandawk
The awk
command is a powerful tool for pattern scanning and processing in text files. It processes each line in a file, splitting them into fields based on a delimiter and performing actions on these fields.
awk 'pattern { action }' [file...]
Where pattern
is the condition for processing a line and action
is the operation performed on the matched lines.
awk
awk '{print}' [file]
(Basic Output)Prints each line of the file:
awk '{print}' file.txt
This command prints all lines from file.txt
without any filtering.
awk '{print $1}' [file]
(Print Specific Fields)Prints the first field from each line:
awk '{print $1}' file.txt
This will print only the first word or field from each line in the file.
awk -F ":" '{print $1}' [file]
(Custom Field Separator)Use a custom field separator (in this case, a colon :
):
awk -F ":" '{print $1}' file.txt
This prints the first field from each line using the colon as a delimiter, common in files like /etc/passwd
.
awk '/pattern/ {print}' [file]
(Pattern Matching)Search for a pattern in the file and print matching lines:
awk '/example/ {print}' file.txt
This prints only the lines that contain the word "example".
awk '{print $1, $3}' [file]
(Print Multiple Fields)Print multiple fields from each line:
awk '{print $1, $3}' file.txt
This prints both the first and third fields from each line.
awk 'NR==3' [file]
(Print Specific Line)Print only the third line from the file:
awk 'NR==3' file.txt
This command outputs the third line of the file.
awk 'NR==2, NR==4' [file]
(Print a Range of Lines)Print a range of lines (e.g., from line 2 to line 4):
awk 'NR==2, NR==4' file.txt
This command prints lines 2, 3, and 4 from the file.
awk '{sum += $1} END {print sum}' [file]
(Sum a Field)Sum the values of a specific field:
awk '{sum += $1} END {print sum}' file.txt
This command adds all the values in the first field and prints the total.
awk '{if ($1 > 10) print}' [file]
(Conditional Statements)Print lines where the first field is greater than 10:
awk '{if ($1 > 10) print}' file.txt
This command only prints lines where the first field has a value greater than 10.
awk 'BEGIN {print "Header"} {print $1} END {print "Footer"}' [file]
(BEGIN and END Blocks)Print a header before processing and a footer after processing:
awk 'BEGIN {print "Header"} {print $1} END {print "Footer"}' file.txt
This prints "Header" first, then the first field from each line, followed by "Footer" at the end.
awk --help
Displays help information for the awk
command:
awk --help
Option | Description |
---|---|
awk '{print}' [file] |
Prints each line from the file. |
awk '{print $1}' [file] |
Prints the first field of each line. |
awk -F ":" '{print $1}' [file] |
Use a colon as the field delimiter. |
awk '/pattern/ {print}' [file] |
Print lines that match a given pattern. |
awk '{print $1, $3}' [file] |
Print multiple fields. |
awk 'NR==3' [file] |
Print only the third line from the file. |
awk 'NR==2, NR==4' [file] |
Print a range of lines (from line 2 to 4). |
awk '{sum += $1} END {print sum}' [file] |
Sum the values of a field. |
awk '{if ($1 > 10) print}' [file] |
Print lines where the first field is greater than 10. |
awk 'BEGIN {print "Header"} {print $1} END {print "Footer"}' [file] |
Print a header, process lines, and print a footer. |
awk --help |
Display help information for awk . |
For more detailed information, use the manual page for the awk
command:
man awk