Awk: Difference between revisions
Line 61: | Line 61: | ||
| $0 || The entire record | | $0 || The entire record | ||
|- | |- | ||
| $FS || The [[#Field_Separator|field separator]] | | $FS || The [[#Field_Separator|field separator]] | ||
|} | |} | ||
Revision as of 23:03, 14 June 2018
External
- http://en.wikipedia.org/wiki/Awk
- Awk by Example
Internal
Overview
awk handles a stream of text as a sequence of records. The default record separator is the new line, so by default each line is handled as a record. Each record is broken up into a sequence of fields. By default, the field separator is white space. An awk program consists in condition-action statements, that are applied to the records, as they are fed into awk. Each record is scanned for the condition, which can be a pattern, among other things, and for each condition that matches, the associated action is executed.
awk '<program>' <file-to-process>
The program is a succession of:
condition { action }
Example:
awk '{print $1}' ./sample.txt
For the above, the condition matches all records and the action prints out the first field. More details about the syntax are available in Program Structure.
The program can be specified in a separate text file, which is provided to awk by preceding the program file name with -f:
awk -f <program-file-name> <file-to-process>
Referring Fields
The fields are referred to with $<field-number> where field-number is 1-based: the first field in the record is $1.
Field Separator
The default field separator is white space. It can be changed either in command line or program.
Command line:
awk -F":" ....
In program:
awk 'BEGIN {FS=":"} {print $1}' ...
Program Structure
Comments
Everything that follows a '#' is a comment. The '#' does not have to be on the first position in line.
Built-in Variables
$1, $2, $3 ... | Corresponding fields in the record, 1-based. |
$0 | The entire record |
$FS | The field separator |
Conditions
condition { ... }
Actions
... { action }