Awk (English) Cheat Sheet
Awk (English) Cheat Sheet
Awk (English) Cheat Sheet
awk [-v var=val] 'program' [file1 file2...] sin(expr) Returns the sine of expr, which is in radians.
awk [-v var=val] -f progfile [file1 file2...] sqrt(expr) The square root function.
srand([expr]) Uses expr as a new seed for the random number
Predefined Variable Summary
generator. If no expr is provided, the time of day is
FS Input Field Separator, a space by default. used. The return value is the previous seed for the
OFS Output Field Separator, a space by default. random number generator.
FNR Contains number of lines read, but is reset for each file rshift(val, count) Return the value of val, shifted right by count bits.
read. xor(v1, v2) Return the bitwise XOR of the values provided by
$0 The whole line. v1 and v2.
asorti(s [, d]) Returns the number of elements in the source index(s, t) Returns the index of the string t in the string s,
array s. The behavior is the same as that of or 0 if t is not present (this implies that
asort(), except that the array indices are used character indices start at one).
for sorting, not the array values. When done, length([s]) Returns the length of the string s, or the
the array is indexed numerically, and the values length of $0 if s is not supplied.
are those of the original indices. The original
match(s, r [, a]) Returns the position in s where the regular
values are lost; thus provide a second array if
expression r occurs, or 0 if r is not present,
you wish to preserve the original.
and sets the values of RSTART and
gensub(r, s, h [, t]) Search the target string t for matches of the RLENGTH. Note that the argument order is
regular expression r. If h is a string beginning the same as for the ~ operator: str ~ re. If
with g or G, then replace all matches of r with s. array a is provided, a is cleared and then
Otherwise, h is a number indicating which elements 1 through n are filled with the
match of r to replace. If t is not supplied, $0 is portions of s that match the corresponding
used instead. Within the replacement text s, the parenthesized subexpression in r. The 0'th
sequence \n, where n is a digit from 1 to 9, may element of a contains the portion of s
be used to indicate just the text that matched matched by the entire regular expression r.
the n'th parenthesized subexpression. The Subscripts a[n, "start"], and a[n, "length"]
sequence \0 represents the entire matched text, provide the starting index in the string and
as does the character &. Unlike sub() and length respectively, of each matching
gsub(), the modified string is returned as the substring.
result of the function, and the original target
split(s, a [, r]) Splits the string s into the array a on the
string is not changed.
regular expression r, and returns the number
gsub(r, s [, t]) For each substring matching the regular of fields. If r is omitted, FS is used instead.
expression r in the string t, substitute the string The array a is cleared first. Splitting behaves
s, and return the number of substitutions. If t is identically to field splitting.
not supplied, use $0. An & in the replacement
sprintf(fmt, expr-list) Prints expr-list according to fmt, and returns
text is replaced with the text that was actually
the resulting string.
matched. Use \& to get a literal & (This must be
typed as "\\&").
strtonum(str) Examines str, and returns its numeric value. If str getline <file Set $0 from next record of file; set NF.
begins with a leading 0, strtonum() assumes that str getline var Set var from next input record; set NR,
is an octal number. If str begins with a leading 0x or FNR.
0X, strtonum() assumes that str is a hexadecimal
getline var <file Set var from next record of file.
number.
command | getline [var] Run command piping the output either
sub(r, s [, t]) Just like gsub(), but only the first matching
into $0 or var, as above. If using a pipe
substring is replaced.
or co-process to getline, or from print or
substr(s, i [, n]) Returns the at most n-character substring of s printf within a loop, you must use close()
starting at i. If n is omitted, the rest of s is used. to create new instances.
tolower(str) Returns a copy of the string str, with all the upper- command |& getline [var] Run command as a co-process piping the
case characters in str translated to their corres‐ output either into $0 or var, as above.
ponding lower-case counterparts. Non-alphabetic Co-processes are a gawk extension.
characters are left unchanged.
next Stop processing the current input record.
toupper(str) Returns a copy of the string str, with all the lower- The next input record is read and
case characters in str translated to their corres‐ processing starts over with the first
ponding upper-case counterparts. Non-alphabetic pattern in the AWK program. If the end of
characters are left unchanged. the input data is reached, the END
block(s), if any, are executed.
Operators
nextfile Stop processing the current input file.
&& || ! Logical operators : AND, OR, NOT The next input record read comes from
< <= == != >= > ~ !~ Comparison operators. the next input file. FILENAME and
ARGIND are updated, FNR is reset to 1,
I/O Statements and processing starts over with the first
pattern in the AWK program. If the end of
close(file [, how]) Close file, pipe or co-process. The optional how
the input data is reached, the END
should only be used when closing one end of a
block(s), are executed.
two-way pipe to a co-process. It must be a string
value, either "to" or "from". print Prints the current record. The output
record is terminated with the value of the
getline Set $0 from next input record; set NF, NR, FNR.
ORS variable.
Returns 0 on EOF and 1 on an error. Upon an
error, ERRNO contains a string describing the print expr-list Prints expressions. Each expression is
problem. separated by the value of the OFS
variable. The output record is terminated
with the value of the ORS variable.
print expr-list >file Prints expressions on file. Each expression -F fs or --field-sepearator fs Use fs for the
is separated by the value of the OFS input field
variable. The output record is terminated separator (the
with the value of the ORS variable. value of the
printf fmt, expr-list Format and print. FS predefined
variable).
printf fmt, expr-list >file Format and print on file.
-v var=val or --assign var=val Assign the
system(cmd-line) Execute the command cmd-line, and return
value val to
the exit status.
the variable
fflush([file]) Flush any buffers associated with the open
var, before
output file or pipe file. If file is missing, then
execution of
stdout is flushed. If file is the null string,
the program
then all open output files and pipes have
begins. Such
their buffers flushed.
variable
print ... >> file Appends output to the file. values are
print ... | command Writes on a pipe. available to
the BEGIN
print ... |& command Sends data to a co-process.
block of an
AWK
Time Functions
program.
systime() Returns the current time of day as
-f program-file or --file program-file Read the
the number of seconds since the
AWK program
Epoch (1970-01-01 00:00:00 UTC
source from
on POSIX systems).
the file progra‐
mktime(datespec) Turns datespec into a time stamp of
m-file, instead
the same form as returned by
of from the
systime(). The datespec is a string
first command
of the form YYYY MM DD HH MM
line argument.
SS[ DST].
Multiple -f (or -
strftime([format [, timestamp]]) Formats timestamp according to the -file) options
specification in format. The may be used.
timestamp should be of the same
-mf NNN or -mr NNN Set various
form as returned by systime(). If
memory limits
timestamp is missing, the current
to the value
time of day is used.If format is
NNN. The f
missing, a default format equivalent
flag sets the
to the output of date(1) is used.
maximum
number of
fields, and the
r flag sets the
maximum
record size
(ignored by
gawk, since
gawk has no
pre-defined
limits).
-W compat or -W traditional or --compat--traditional Run in
compatibility
mode. In
compatibility
mode, gawk
behaves
identically to
UNIX awk;
none of the
GNU-specific
extensions
are recogn‐
ized.