xref: /freebsd/usr.bin/awk/awk.1 (revision 4e52f5db352fe54d6ba342bcde01228096db8b19)
1e1fe74adSBaptiste Daroussin.\"	$OpenBSD: awk.1,v 1.44 2015/09/14 20:06:58 schwarze Exp $
2e1fe74adSBaptiste Daroussin.\"
3e1fe74adSBaptiste Daroussin.\" Copyright (C) Lucent Technologies 1997
4e1fe74adSBaptiste Daroussin.\" All Rights Reserved
5e1fe74adSBaptiste Daroussin.\"
6e1fe74adSBaptiste Daroussin.\" Permission to use, copy, modify, and distribute this software and
7e1fe74adSBaptiste Daroussin.\" its documentation for any purpose and without fee is hereby
8e1fe74adSBaptiste Daroussin.\" granted, provided that the above copyright notice appear in all
9e1fe74adSBaptiste Daroussin.\" copies and that both that the copyright notice and this
10e1fe74adSBaptiste Daroussin.\" permission notice and warranty disclaimer appear in supporting
11e1fe74adSBaptiste Daroussin.\" documentation, and that the name Lucent Technologies or any of
12e1fe74adSBaptiste Daroussin.\" its entities not be used in advertising or publicity pertaining
13e1fe74adSBaptiste Daroussin.\" to distribution of the software without specific, written prior
14e1fe74adSBaptiste Daroussin.\" permission.
15e1fe74adSBaptiste Daroussin.\"
16e1fe74adSBaptiste Daroussin.\" LUCENT DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE,
17e1fe74adSBaptiste Daroussin.\" INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS.
18e1fe74adSBaptiste Daroussin.\" IN NO EVENT SHALL LUCENT OR ANY OF ITS ENTITIES BE LIABLE FOR ANY
19e1fe74adSBaptiste Daroussin.\" SPECIAL, INDIRECT OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
20e1fe74adSBaptiste Daroussin.\" WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER
21e1fe74adSBaptiste Daroussin.\" IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION,
22e1fe74adSBaptiste Daroussin.\" ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF
23e1fe74adSBaptiste Daroussin.\" THIS SOFTWARE.
24e1fe74adSBaptiste Daroussin.\"
25e1fe74adSBaptiste Daroussin.\"	$FreeBSD$
26*4e52f5dbSWarner Losh.Dd July 30, 2021
27e1fe74adSBaptiste Daroussin.Dt AWK 1
28e1fe74adSBaptiste Daroussin.Os
29e1fe74adSBaptiste Daroussin.Sh NAME
30e1fe74adSBaptiste Daroussin.Nm awk
31e1fe74adSBaptiste Daroussin.Nd pattern-directed scanning and processing language
32e1fe74adSBaptiste Daroussin.Sh SYNOPSIS
33e1fe74adSBaptiste Daroussin.Nm awk
34e1fe74adSBaptiste Daroussin.Op Fl safe
357d93dd0fSYuri Pankov.Op Fl version
36e1fe74adSBaptiste Daroussin.Op Fl d Ns Op Ar n
37e1fe74adSBaptiste Daroussin.Op Fl F Ar fs
38e1fe74adSBaptiste Daroussin.Op Fl v Ar var Ns = Ns Ar value
39e1fe74adSBaptiste Daroussin.Op Ar prog | Fl f Ar progfile
40e1fe74adSBaptiste Daroussin.Ar
41e1fe74adSBaptiste Daroussin.Sh DESCRIPTION
42e1fe74adSBaptiste Daroussin.Nm
43e1fe74adSBaptiste Daroussinscans each input
44e1fe74adSBaptiste Daroussin.Ar file
45e1fe74adSBaptiste Daroussinfor lines that match any of a set of patterns specified literally in
46e1fe74adSBaptiste Daroussin.Ar prog
47e1fe74adSBaptiste Daroussinor in one or more files specified as
48e1fe74adSBaptiste Daroussin.Fl f Ar progfile .
49e1fe74adSBaptiste DaroussinWith each pattern there can be an associated action that will be performed
50e1fe74adSBaptiste Daroussinwhen a line of a
51e1fe74adSBaptiste Daroussin.Ar file
52e1fe74adSBaptiste Daroussinmatches the pattern.
53e1fe74adSBaptiste DaroussinEach line is matched against the
54e1fe74adSBaptiste Daroussinpattern portion of every pattern-action statement;
55e1fe74adSBaptiste Daroussinthe associated action is performed for each matched pattern.
56e1fe74adSBaptiste DaroussinThe file name
57e1fe74adSBaptiste Daroussin.Sq -
58e1fe74adSBaptiste Daroussinmeans the standard input.
59e1fe74adSBaptiste DaroussinAny
60e1fe74adSBaptiste Daroussin.Ar file
61e1fe74adSBaptiste Daroussinof the form
62e1fe74adSBaptiste Daroussin.Ar var Ns = Ns Ar value
63e1fe74adSBaptiste Daroussinis treated as an assignment, not a filename,
64e1fe74adSBaptiste Daroussinand is executed at the time it would have been opened if it were a filename.
65e1fe74adSBaptiste Daroussin.Pp
66e1fe74adSBaptiste DaroussinThe options are as follows:
67e1fe74adSBaptiste Daroussin.Bl -tag -width "-safe "
68e1fe74adSBaptiste Daroussin.It Fl d Ns Op Ar n
69e1fe74adSBaptiste DaroussinDebug mode.
70e1fe74adSBaptiste DaroussinSet debug level to
71e1fe74adSBaptiste Daroussin.Ar n ,
72e1fe74adSBaptiste Daroussinor 1 if
73e1fe74adSBaptiste Daroussin.Ar n
74e1fe74adSBaptiste Daroussinis not specified.
75e1fe74adSBaptiste DaroussinA value greater than 1 causes
76e1fe74adSBaptiste Daroussin.Nm
77e1fe74adSBaptiste Daroussinto dump core on fatal errors.
78e1fe74adSBaptiste Daroussin.It Fl F Ar fs
79e1fe74adSBaptiste DaroussinDefine the input field separator to be the regular expression
80e1fe74adSBaptiste Daroussin.Ar fs .
81e1fe74adSBaptiste Daroussin.It Fl f Ar progfile
82e1fe74adSBaptiste DaroussinRead program code from the specified file
83e1fe74adSBaptiste Daroussin.Ar progfile
84e1fe74adSBaptiste Daroussininstead of from the command line.
85e1fe74adSBaptiste Daroussin.It Fl safe
86e1fe74adSBaptiste DaroussinDisable file output
87e1fe74adSBaptiste Daroussin.Pf ( Ic print No > ,
88e1fe74adSBaptiste Daroussin.Ic print No >> ) ,
89e1fe74adSBaptiste Daroussinprocess creation
90e1fe74adSBaptiste Daroussin.Po
91e1fe74adSBaptiste Daroussin.Ar cmd | Ic getline ,
92e1fe74adSBaptiste Daroussin.Ic print | ,
93e1fe74adSBaptiste Daroussin.Ic system
94e1fe74adSBaptiste Daroussin.Pc
95e1fe74adSBaptiste Daroussinand access to the environment
96e1fe74adSBaptiste Daroussin.Pf ( Va ENVIRON ;
97e1fe74adSBaptiste Daroussinsee the section on variables below).
98e1fe74adSBaptiste DaroussinThis is a first
99e1fe74adSBaptiste Daroussin.Pq and not very reliable
100e1fe74adSBaptiste Daroussinapproximation to a
101e1fe74adSBaptiste Daroussin.Dq safe
102e1fe74adSBaptiste Daroussinversion of
103e1fe74adSBaptiste Daroussin.Nm .
1047d93dd0fSYuri Pankov.It Fl version
105e1fe74adSBaptiste DaroussinPrint the version number of
106e1fe74adSBaptiste Daroussin.Nm
107e1fe74adSBaptiste Daroussinto standard output and exit.
108e1fe74adSBaptiste Daroussin.It Fl v Ar var Ns = Ns Ar value
109e1fe74adSBaptiste DaroussinAssign
110e1fe74adSBaptiste Daroussin.Ar value
111e1fe74adSBaptiste Daroussinto variable
112e1fe74adSBaptiste Daroussin.Ar var
113e1fe74adSBaptiste Daroussinbefore
114e1fe74adSBaptiste Daroussin.Ar prog
115e1fe74adSBaptiste Daroussinis executed;
116e1fe74adSBaptiste Daroussinany number of
117e1fe74adSBaptiste Daroussin.Fl v
118e1fe74adSBaptiste Daroussinoptions may be present.
119e1fe74adSBaptiste Daroussin.El
120e1fe74adSBaptiste Daroussin.Pp
121e1fe74adSBaptiste DaroussinThe input is normally made up of input lines
122e1fe74adSBaptiste Daroussin.Pq records
123e1fe74adSBaptiste Daroussinseparated by newlines, or by the value of
124e1fe74adSBaptiste Daroussin.Va RS .
125e1fe74adSBaptiste DaroussinIf
126e1fe74adSBaptiste Daroussin.Va RS
127e1fe74adSBaptiste Daroussinis null, then any number of blank lines are used as the record separator,
128e1fe74adSBaptiste Daroussinand newlines are used as field separators
129e1fe74adSBaptiste Daroussin(in addition to the value of
130e1fe74adSBaptiste Daroussin.Va FS ) .
131e1fe74adSBaptiste DaroussinThis is convenient when working with multi-line records.
132e1fe74adSBaptiste Daroussin.Pp
133e1fe74adSBaptiste DaroussinAn input line is normally made up of fields separated by whitespace,
134b891aedcSWarner Loshor by the extended regular expression
135b891aedcSWarner Losh.Va FS
136b891aedcSWarner Loshas described below.
137e1fe74adSBaptiste DaroussinThe fields are denoted
138e1fe74adSBaptiste Daroussin.Va $1 , $2 , ... ,
139e1fe74adSBaptiste Daroussinwhile
140e1fe74adSBaptiste Daroussin.Va $0
141e1fe74adSBaptiste Daroussinrefers to the entire line.
142e1fe74adSBaptiste DaroussinIf
143e1fe74adSBaptiste Daroussin.Va FS
144e1fe74adSBaptiste Daroussinis null, the input line is split into one field per character.
145b891aedcSWarner LoshWhile both gawk and mawk have the same behavior, it is unspecified in the
146b891aedcSWarner Losh.St -p1003.1-2008
147b891aedcSWarner Loshstandard.
148b891aedcSWarner LoshIf
149b891aedcSWarner Losh.Va FS
150b891aedcSWarner Loshis a single space, then leading and trailing blank and newline characters are
151b891aedcSWarner Loshskipped.
152b891aedcSWarner LoshFields are delimited by one or more blank or newline characters.
153b891aedcSWarner LoshA blank character is a space or a tab.
154b891aedcSWarner LoshIf
155b891aedcSWarner Losh.Va FS
156b891aedcSWarner Loshis a single character, other than space, fields are delimited by each single
157b891aedcSWarner Loshoccurrence of that character.
158b891aedcSWarner LoshThe
159b891aedcSWarner Losh.Va FS
160b891aedcSWarner Loshvariable defaults to a single space.
161e1fe74adSBaptiste Daroussin.Pp
162e1fe74adSBaptiste DaroussinNormally, any number of blanks separate fields.
163e1fe74adSBaptiste DaroussinIn order to set the field separator to a single blank, use the
164e1fe74adSBaptiste Daroussin.Fl F
165e1fe74adSBaptiste Daroussinoption with a value of
166e1fe74adSBaptiste Daroussin.Sq [\ \&] .
167e1fe74adSBaptiste DaroussinIf a field separator of
168e1fe74adSBaptiste Daroussin.Sq t
169e1fe74adSBaptiste Daroussinis specified,
170e1fe74adSBaptiste Daroussin.Nm
171e1fe74adSBaptiste Daroussintreats it as if
172e1fe74adSBaptiste Daroussin.Sq \et
173e1fe74adSBaptiste Daroussinhad been specified and uses
174e1fe74adSBaptiste Daroussin.Aq TAB
175e1fe74adSBaptiste Daroussinas the field separator.
176e1fe74adSBaptiste DaroussinIn order to use a literal
177e1fe74adSBaptiste Daroussin.Sq t
178e1fe74adSBaptiste Daroussinas the field separator, use the
179e1fe74adSBaptiste Daroussin.Fl F
180e1fe74adSBaptiste Daroussinoption with a value of
181e1fe74adSBaptiste Daroussin.Sq [t] .
182e1fe74adSBaptiste Daroussin.Pp
183e1fe74adSBaptiste DaroussinA pattern-action statement has the form
184e1fe74adSBaptiste Daroussin.Pp
185e1fe74adSBaptiste Daroussin.D1 Ar pattern Ic \&{ Ar action Ic \&}
186e1fe74adSBaptiste Daroussin.Pp
187e1fe74adSBaptiste DaroussinA missing
188e1fe74adSBaptiste Daroussin.Ic \&{ Ar action Ic \&}
189e1fe74adSBaptiste Daroussinmeans print the line;
190e1fe74adSBaptiste Daroussina missing pattern always matches.
191e1fe74adSBaptiste DaroussinPattern-action statements are separated by newlines or semicolons.
192e1fe74adSBaptiste Daroussin.Pp
193e1fe74adSBaptiste DaroussinNewlines are permitted after a terminating statement or following a comma
194e1fe74adSBaptiste Daroussin.Pq Sq ,\& ,
195e1fe74adSBaptiste Daroussinan open brace
196e1fe74adSBaptiste Daroussin.Pq Sq { ,
197e1fe74adSBaptiste Daroussina logical AND
198e1fe74adSBaptiste Daroussin.Pq Sq && ,
199e1fe74adSBaptiste Daroussina logical OR
200e1fe74adSBaptiste Daroussin.Pq Sq || ,
201e1fe74adSBaptiste Daroussinafter the
202e1fe74adSBaptiste Daroussin.Sq do
203e1fe74adSBaptiste Daroussinor
204e1fe74adSBaptiste Daroussin.Sq else
205e1fe74adSBaptiste Daroussinkeywords,
206e1fe74adSBaptiste Daroussinor after the closing parenthesis of an
207e1fe74adSBaptiste Daroussin.Sq if ,
208e1fe74adSBaptiste Daroussin.Sq for ,
209e1fe74adSBaptiste Daroussinor
210e1fe74adSBaptiste Daroussin.Sq while
211e1fe74adSBaptiste Daroussinstatement.
212e1fe74adSBaptiste DaroussinAdditionally, a backslash
213e1fe74adSBaptiste Daroussin.Pq Sq \e
214e1fe74adSBaptiste Daroussincan be used to escape a newline between tokens.
215e1fe74adSBaptiste Daroussin.Pp
216e1fe74adSBaptiste DaroussinAn action is a sequence of statements.
217e1fe74adSBaptiste DaroussinA statement can be one of the following:
218e1fe74adSBaptiste Daroussin.Pp
219e1fe74adSBaptiste Daroussin.Bl -tag -width Ds -offset indent -compact
220e1fe74adSBaptiste Daroussin.It Ic if Ar ( expression ) Ar statement Op Ic else Ar statement
221e1fe74adSBaptiste Daroussin.It Ic while Ar ( expression ) Ar statement
222e1fe74adSBaptiste Daroussin.It Ic for Ar ( expression ; expression ; expression ) statement
223e1fe74adSBaptiste Daroussin.It Ic for Ar ( var Ic in Ar array ) statement
224e1fe74adSBaptiste Daroussin.It Ic do Ar statement Ic while Ar ( expression )
225e1fe74adSBaptiste Daroussin.It Ic break
226e1fe74adSBaptiste Daroussin.It Ic continue
227e1fe74adSBaptiste Daroussin.It Xo Ic {
228e1fe74adSBaptiste Daroussin.Op Ar statement ...
229e1fe74adSBaptiste Daroussin.Ic }
230e1fe74adSBaptiste Daroussin.Xc
231e1fe74adSBaptiste Daroussin.It Xo Ar expression
232e1fe74adSBaptiste Daroussin.No # commonly
233e1fe74adSBaptiste Daroussin.Ar var No = Ar expression
234e1fe74adSBaptiste Daroussin.Xc
235e1fe74adSBaptiste Daroussin.It Xo Ic print
236e1fe74adSBaptiste Daroussin.Op Ar expression-list
237e1fe74adSBaptiste Daroussin.Op > Ns Ar expression
238e1fe74adSBaptiste Daroussin.Xc
239e1fe74adSBaptiste Daroussin.It Xo Ic printf Ar format
240e1fe74adSBaptiste Daroussin.Op Ar ... , expression-list
241e1fe74adSBaptiste Daroussin.Op > Ns Ar expression
242e1fe74adSBaptiste Daroussin.Xc
243e1fe74adSBaptiste Daroussin.It Ic return Op Ar expression
244e1fe74adSBaptiste Daroussin.It Xo Ic next
245e1fe74adSBaptiste Daroussin.No # skip remaining patterns on this input line
246e1fe74adSBaptiste Daroussin.Xc
247e1fe74adSBaptiste Daroussin.It Xo Ic nextfile
248e1fe74adSBaptiste Daroussin.No # skip rest of this file, open next, start at top
249e1fe74adSBaptiste Daroussin.Xc
250e1fe74adSBaptiste Daroussin.It Xo Ic delete
251e1fe74adSBaptiste Daroussin.Sm off
252e1fe74adSBaptiste Daroussin.Ar array Ic \&[ Ar expression Ic \&]
253e1fe74adSBaptiste Daroussin.Sm on
254e1fe74adSBaptiste Daroussin.No # delete an array element
255e1fe74adSBaptiste Daroussin.Xc
256e1fe74adSBaptiste Daroussin.It Xo Ic delete Ar array
257e1fe74adSBaptiste Daroussin.No # delete all elements of array
258e1fe74adSBaptiste Daroussin.Xc
259e1fe74adSBaptiste Daroussin.It Xo Ic exit
260e1fe74adSBaptiste Daroussin.Op Ar expression
261e1fe74adSBaptiste Daroussin.No # exit immediately; status is Ar expression
262e1fe74adSBaptiste Daroussin.Xc
263e1fe74adSBaptiste Daroussin.El
264e1fe74adSBaptiste Daroussin.Pp
265e1fe74adSBaptiste DaroussinStatements are terminated by
266e1fe74adSBaptiste Daroussinsemicolons, newlines or right braces.
267e1fe74adSBaptiste DaroussinAn empty
268e1fe74adSBaptiste Daroussin.Ar expression-list
269e1fe74adSBaptiste Daroussinstands for
270e1fe74adSBaptiste Daroussin.Ar $0 .
271e1fe74adSBaptiste DaroussinString constants are quoted
272e1fe74adSBaptiste Daroussin.Li \&"" ,
273e1fe74adSBaptiste Daroussinwith the usual C escapes recognized within
274e1fe74adSBaptiste Daroussin(see
275e1fe74adSBaptiste Daroussin.Xr printf 1
276e1fe74adSBaptiste Daroussinfor a complete list of these).
277e1fe74adSBaptiste DaroussinExpressions take on string or numeric values as appropriate,
278e1fe74adSBaptiste Daroussinand are built using the operators
279e1fe74adSBaptiste Daroussin.Ic + \- * / % ^
280e1fe74adSBaptiste Daroussin.Pq exponentiation ,
281e1fe74adSBaptiste Daroussinand concatenation
282e1fe74adSBaptiste Daroussin.Pq indicated by whitespace .
283e1fe74adSBaptiste DaroussinThe operators
284e1fe74adSBaptiste Daroussin.Ic \&! ++ \-\- += \-= *= /= %= ^=
2857d93dd0fSYuri Pankov.Ic > >= < <= == != ?\&:
286e1fe74adSBaptiste Daroussinare also available in expressions.
287e1fe74adSBaptiste DaroussinVariables may be scalars, array elements
288e1fe74adSBaptiste Daroussin(denoted
289e1fe74adSBaptiste Daroussin.Li x[i] )
290e1fe74adSBaptiste Daroussinor fields.
291e1fe74adSBaptiste DaroussinVariables are initialized to the null string.
292e1fe74adSBaptiste DaroussinArray subscripts may be any string,
293e1fe74adSBaptiste Daroussinnot necessarily numeric;
294e1fe74adSBaptiste Daroussinthis allows for a form of associative memory.
295e1fe74adSBaptiste DaroussinMultiple subscripts such as
296e1fe74adSBaptiste Daroussin.Li [i,j,k]
297e1fe74adSBaptiste Daroussinare permitted; the constituents are concatenated,
298e1fe74adSBaptiste Daroussinseparated by the value of
299e1fe74adSBaptiste Daroussin.Va SUBSEP
300e1fe74adSBaptiste Daroussin.Pq see the section on variables below .
301e1fe74adSBaptiste Daroussin.Pp
302e1fe74adSBaptiste DaroussinThe
303e1fe74adSBaptiste Daroussin.Ic print
304e1fe74adSBaptiste Daroussinstatement prints its arguments on the standard output
305e1fe74adSBaptiste Daroussin(or on a file if
306e1fe74adSBaptiste Daroussin.Pf > Ar file
307e1fe74adSBaptiste Daroussinor
308e1fe74adSBaptiste Daroussin.Pf >> Ar file
309e1fe74adSBaptiste Daroussinis present or on a pipe if
310e1fe74adSBaptiste Daroussin.Pf |\ \& Ar cmd
311e1fe74adSBaptiste Daroussinis present), separated by the current output field separator,
312e1fe74adSBaptiste Daroussinand terminated by the output record separator.
313e1fe74adSBaptiste Daroussin.Ar file
314e1fe74adSBaptiste Daroussinand
315e1fe74adSBaptiste Daroussin.Ar cmd
316e1fe74adSBaptiste Daroussinmay be literal names or parenthesized expressions;
317e1fe74adSBaptiste Daroussinidentical string values in different statements denote
318e1fe74adSBaptiste Daroussinthe same open file.
319e1fe74adSBaptiste DaroussinThe
320e1fe74adSBaptiste Daroussin.Ic printf
321e1fe74adSBaptiste Daroussinstatement formats its expression list according to the format
322e1fe74adSBaptiste Daroussin(see
323e1fe74adSBaptiste Daroussin.Xr printf 1 ) .
324e1fe74adSBaptiste Daroussin.Pp
325e1fe74adSBaptiste DaroussinPatterns are arbitrary Boolean combinations
326e1fe74adSBaptiste Daroussin(with
327e1fe74adSBaptiste Daroussin.Ic "\&! || &&" )
328e1fe74adSBaptiste Daroussinof regular expressions and
329e1fe74adSBaptiste Daroussinrelational expressions.
330e1fe74adSBaptiste Daroussin.Nm
331e1fe74adSBaptiste Daroussinsupports extended regular expressions
332e1fe74adSBaptiste Daroussin.Pq EREs .
333e1fe74adSBaptiste DaroussinSee
334e1fe74adSBaptiste Daroussin.Xr re_format 7
335e1fe74adSBaptiste Daroussinfor more information on regular expressions.
336e1fe74adSBaptiste DaroussinIsolated regular expressions
337e1fe74adSBaptiste Daroussinin a pattern apply to the entire line.
338e1fe74adSBaptiste DaroussinRegular expressions may also occur in
339e1fe74adSBaptiste Daroussinrelational expressions, using the operators
340e1fe74adSBaptiste Daroussin.Ic ~
341e1fe74adSBaptiste Daroussinand
342e1fe74adSBaptiste Daroussin.Ic !~ .
343e1fe74adSBaptiste Daroussin.Pf / Ar re Ns /
344e1fe74adSBaptiste Daroussinis a constant regular expression;
345e1fe74adSBaptiste Daroussinany string (constant or variable) may be used
346e1fe74adSBaptiste Daroussinas a regular expression, except in the position of an isolated regular expression
347e1fe74adSBaptiste Daroussinin a pattern.
348e1fe74adSBaptiste Daroussin.Pp
349e1fe74adSBaptiste DaroussinA pattern may consist of two patterns separated by a comma;
350e1fe74adSBaptiste Daroussinin this case, the action is performed for all lines
351e1fe74adSBaptiste Daroussinfrom an occurrence of the first pattern
352e1fe74adSBaptiste Daroussinthrough an occurrence of the second.
353e1fe74adSBaptiste Daroussin.Pp
354e1fe74adSBaptiste DaroussinA relational expression is one of the following:
355e1fe74adSBaptiste Daroussin.Pp
356e1fe74adSBaptiste Daroussin.Bl -tag -width Ds -offset indent -compact
357e1fe74adSBaptiste Daroussin.It Ar expression matchop regular-expression
358e1fe74adSBaptiste Daroussin.It Ar expression relop expression
359e1fe74adSBaptiste Daroussin.It Ar expression Ic in Ar array-name
360e1fe74adSBaptiste Daroussin.It Xo Ic \&( Ns
361e1fe74adSBaptiste Daroussin.Ar expr , expr , \&... Ns Ic \&) in
362e1fe74adSBaptiste Daroussin.Ar array-name
363e1fe74adSBaptiste Daroussin.Xc
364e1fe74adSBaptiste Daroussin.El
365e1fe74adSBaptiste Daroussin.Pp
366e1fe74adSBaptiste Daroussinwhere a
367e1fe74adSBaptiste Daroussin.Ar relop
368e1fe74adSBaptiste Daroussinis any of the six relational operators in C, and a
369e1fe74adSBaptiste Daroussin.Ar matchop
370e1fe74adSBaptiste Daroussinis either
371e1fe74adSBaptiste Daroussin.Ic ~
372e1fe74adSBaptiste Daroussin(matches)
373e1fe74adSBaptiste Daroussinor
374e1fe74adSBaptiste Daroussin.Ic !~
375e1fe74adSBaptiste Daroussin(does not match).
376e1fe74adSBaptiste DaroussinA conditional is an arithmetic expression,
377e1fe74adSBaptiste Daroussina relational expression,
378e1fe74adSBaptiste Daroussinor a Boolean combination
379e1fe74adSBaptiste Daroussinof these.
380e1fe74adSBaptiste Daroussin.Pp
381e1fe74adSBaptiste DaroussinThe special patterns
382e1fe74adSBaptiste Daroussin.Ic BEGIN
383e1fe74adSBaptiste Daroussinand
384e1fe74adSBaptiste Daroussin.Ic END
385e1fe74adSBaptiste Daroussinmay be used to capture control before the first input line is read
386e1fe74adSBaptiste Daroussinand after the last.
387e1fe74adSBaptiste Daroussin.Ic BEGIN
388e1fe74adSBaptiste Daroussinand
389e1fe74adSBaptiste Daroussin.Ic END
390e1fe74adSBaptiste Daroussindo not combine with other patterns.
391e1fe74adSBaptiste Daroussin.Pp
392e1fe74adSBaptiste DaroussinVariable names with special meanings:
393e1fe74adSBaptiste Daroussin.Pp
394e1fe74adSBaptiste Daroussin.Bl -tag -width "FILENAME " -compact
395e1fe74adSBaptiste Daroussin.It Va ARGC
396e1fe74adSBaptiste DaroussinArgument count, assignable.
397e1fe74adSBaptiste Daroussin.It Va ARGV
398e1fe74adSBaptiste DaroussinArgument array, assignable;
399e1fe74adSBaptiste Daroussinnon-null members are taken as filenames.
400e1fe74adSBaptiste Daroussin.It Va CONVFMT
401e1fe74adSBaptiste DaroussinConversion format when converting numbers
402e1fe74adSBaptiste Daroussin(default
403e1fe74adSBaptiste Daroussin.Qq Li %.6g ) .
404e1fe74adSBaptiste Daroussin.It Va ENVIRON
405e1fe74adSBaptiste DaroussinArray of environment variables; subscripts are names.
406e1fe74adSBaptiste Daroussin.It Va FILENAME
407e1fe74adSBaptiste DaroussinThe name of the current input file.
408e1fe74adSBaptiste Daroussin.It Va FNR
409e1fe74adSBaptiste DaroussinOrdinal number of the current record in the current file.
410e1fe74adSBaptiste Daroussin.It Va FS
411e1fe74adSBaptiste DaroussinRegular expression used to separate fields; also settable
412e1fe74adSBaptiste Daroussinby option
413e1fe74adSBaptiste Daroussin.Fl F Ar fs .
414e1fe74adSBaptiste Daroussin.It Va NF
415e1fe74adSBaptiste DaroussinNumber of fields in the current record.
416e1fe74adSBaptiste Daroussin.Va $NF
417e1fe74adSBaptiste Daroussincan be used to obtain the value of the last field in the current record.
418e1fe74adSBaptiste Daroussin.It Va NR
419e1fe74adSBaptiste DaroussinOrdinal number of the current record.
420e1fe74adSBaptiste Daroussin.It Va OFMT
421e1fe74adSBaptiste DaroussinOutput format for numbers (default
422e1fe74adSBaptiste Daroussin.Qq Li %.6g ) .
423e1fe74adSBaptiste Daroussin.It Va OFS
424e1fe74adSBaptiste DaroussinOutput field separator (default blank).
425e1fe74adSBaptiste Daroussin.It Va ORS
426e1fe74adSBaptiste DaroussinOutput record separator (default newline).
427e1fe74adSBaptiste Daroussin.It Va RLENGTH
428e1fe74adSBaptiste DaroussinThe length of the string matched by the
429e1fe74adSBaptiste Daroussin.Fn match
430e1fe74adSBaptiste Daroussinfunction.
431e1fe74adSBaptiste Daroussin.It Va RS
432e1fe74adSBaptiste DaroussinInput record separator (default newline).
433e1fe74adSBaptiste Daroussin.It Va RSTART
434e1fe74adSBaptiste DaroussinThe starting position of the string matched by the
435e1fe74adSBaptiste Daroussin.Fn match
436e1fe74adSBaptiste Daroussinfunction.
437e1fe74adSBaptiste Daroussin.It Va SUBSEP
438e1fe74adSBaptiste DaroussinSeparates multiple subscripts (default 034).
439e1fe74adSBaptiste Daroussin.El
440e1fe74adSBaptiste Daroussin.Sh FUNCTIONS
441e1fe74adSBaptiste DaroussinThe awk language has a variety of built-in functions:
442e1fe74adSBaptiste Daroussinarithmetic, string, input/output, general, and bit-operation.
443e1fe74adSBaptiste Daroussin.Pp
444e1fe74adSBaptiste DaroussinFunctions may be defined (at the position of a pattern-action statement)
445e1fe74adSBaptiste Daroussinthusly:
446e1fe74adSBaptiste Daroussin.Pp
447e1fe74adSBaptiste Daroussin.Dl function foo(a, b, c) { ...; return x }
448e1fe74adSBaptiste Daroussin.Pp
449e1fe74adSBaptiste DaroussinParameters are passed by value if scalar, and by reference if array name;
450e1fe74adSBaptiste Daroussinfunctions may be called recursively.
451e1fe74adSBaptiste DaroussinParameters are local to the function; all other variables are global.
452e1fe74adSBaptiste DaroussinThus local variables may be created by providing excess parameters in
453e1fe74adSBaptiste Daroussinthe function definition.
454e1fe74adSBaptiste Daroussin.Ss Arithmetic Functions
455e1fe74adSBaptiste Daroussin.Bl -tag -width "atan2(y, x)"
456e1fe74adSBaptiste Daroussin.It Fn atan2 y x
457e1fe74adSBaptiste DaroussinReturn the arctangent of
458e1fe74adSBaptiste Daroussin.Fa y Ns / Ns Fa x
459e1fe74adSBaptiste Daroussinin radians.
460e1fe74adSBaptiste Daroussin.It Fn cos x
461e1fe74adSBaptiste DaroussinReturn the cosine of
462e1fe74adSBaptiste Daroussin.Fa x ,
463e1fe74adSBaptiste Daroussinwhere
464e1fe74adSBaptiste Daroussin.Fa x
465e1fe74adSBaptiste Daroussinis in radians.
466e1fe74adSBaptiste Daroussin.It Fn exp x
467e1fe74adSBaptiste DaroussinReturn the exponential of
468e1fe74adSBaptiste Daroussin.Fa x .
469e1fe74adSBaptiste Daroussin.It Fn int x
470e1fe74adSBaptiste DaroussinReturn
471e1fe74adSBaptiste Daroussin.Fa x
472e1fe74adSBaptiste Daroussintruncated to an integer value.
473e1fe74adSBaptiste Daroussin.It Fn log x
474e1fe74adSBaptiste DaroussinReturn the natural logarithm of
475e1fe74adSBaptiste Daroussin.Fa x .
476e1fe74adSBaptiste Daroussin.It Fn rand
477e1fe74adSBaptiste DaroussinReturn a random number,
478e1fe74adSBaptiste Daroussin.Fa n ,
479e1fe74adSBaptiste Daroussinsuch that
480e1fe74adSBaptiste Daroussin.Sm off
481e1fe74adSBaptiste Daroussin.Pf 0 \*(Le Fa n No \*(Lt 1 .
482e1fe74adSBaptiste Daroussin.Sm on
483e1fe74adSBaptiste Daroussin.It Fn sin x
484e1fe74adSBaptiste DaroussinReturn the sine of
485e1fe74adSBaptiste Daroussin.Fa x ,
486e1fe74adSBaptiste Daroussinwhere
487e1fe74adSBaptiste Daroussin.Fa x
488e1fe74adSBaptiste Daroussinis in radians.
489e1fe74adSBaptiste Daroussin.It Fn sqrt x
490e1fe74adSBaptiste DaroussinReturn the square root of
491e1fe74adSBaptiste Daroussin.Fa x .
492e1fe74adSBaptiste Daroussin.It Fn srand expr
493e1fe74adSBaptiste DaroussinSets seed for
494e1fe74adSBaptiste Daroussin.Fn rand
495e1fe74adSBaptiste Daroussinto
496e1fe74adSBaptiste Daroussin.Fa expr
497e1fe74adSBaptiste Daroussinand returns the previous seed.
498e1fe74adSBaptiste DaroussinIf
499e1fe74adSBaptiste Daroussin.Fa expr
500e1fe74adSBaptiste Daroussinis omitted, the time of day is used instead.
501e1fe74adSBaptiste Daroussin.El
502e1fe74adSBaptiste Daroussin.Ss String Functions
503e1fe74adSBaptiste Daroussin.Bl -tag -width "split(s, a, fs)"
504e1fe74adSBaptiste Daroussin.It Fn gsub r t s
505e1fe74adSBaptiste DaroussinThe same as
506e1fe74adSBaptiste Daroussin.Fn sub
507e1fe74adSBaptiste Daroussinexcept that all occurrences of the regular expression are replaced.
508e1fe74adSBaptiste Daroussin.Fn gsub
509e1fe74adSBaptiste Daroussinreturns the number of replacements.
510e1fe74adSBaptiste Daroussin.It Fn index s t
511e1fe74adSBaptiste DaroussinThe position in
512e1fe74adSBaptiste Daroussin.Fa s
513e1fe74adSBaptiste Daroussinwhere the string
514e1fe74adSBaptiste Daroussin.Fa t
515e1fe74adSBaptiste Daroussinoccurs, or 0 if it does not.
516e1fe74adSBaptiste Daroussin.It Fn length s
517e1fe74adSBaptiste DaroussinThe length of
518e1fe74adSBaptiste Daroussin.Fa s
519e1fe74adSBaptiste Daroussintaken as a string,
520e1fe74adSBaptiste Daroussinor of
521e1fe74adSBaptiste Daroussin.Va $0
522e1fe74adSBaptiste Daroussinif no argument is given.
523e1fe74adSBaptiste Daroussin.It Fn match s r
524e1fe74adSBaptiste DaroussinThe position in
525e1fe74adSBaptiste Daroussin.Fa s
526e1fe74adSBaptiste Daroussinwhere the regular expression
527e1fe74adSBaptiste Daroussin.Fa r
528e1fe74adSBaptiste Daroussinoccurs, or 0 if it does not.
529e1fe74adSBaptiste DaroussinThe variable
530e1fe74adSBaptiste Daroussin.Va RSTART
531e1fe74adSBaptiste Daroussinis set to the starting position of the matched string
532e1fe74adSBaptiste Daroussin.Pq which is the same as the returned value
533e1fe74adSBaptiste Daroussinor zero if no match is found.
534e1fe74adSBaptiste DaroussinThe variable
535e1fe74adSBaptiste Daroussin.Va RLENGTH
536e1fe74adSBaptiste Daroussinis set to the length of the matched string,
537e1fe74adSBaptiste Daroussinor \-1 if no match is found.
538e1fe74adSBaptiste Daroussin.It Fn split s a fs
539e1fe74adSBaptiste DaroussinSplits the string
540e1fe74adSBaptiste Daroussin.Fa s
541e1fe74adSBaptiste Daroussininto array elements
542e1fe74adSBaptiste Daroussin.Va a[1] , a[2] , ... , a[n]
543e1fe74adSBaptiste Daroussinand returns
544e1fe74adSBaptiste Daroussin.Va n .
545e1fe74adSBaptiste DaroussinThe separation is done with the regular expression
546e1fe74adSBaptiste Daroussin.Ar fs
547e1fe74adSBaptiste Daroussinor with the field separator
548e1fe74adSBaptiste Daroussin.Va FS
549e1fe74adSBaptiste Daroussinif
550e1fe74adSBaptiste Daroussin.Ar fs
551e1fe74adSBaptiste Daroussinis not given.
552e1fe74adSBaptiste DaroussinAn empty string as field separator splits the string
553e1fe74adSBaptiste Daroussininto one array element per character.
554e1fe74adSBaptiste Daroussin.It Fn sprintf fmt expr ...
555e1fe74adSBaptiste DaroussinThe string resulting from formatting
556e1fe74adSBaptiste Daroussin.Fa expr , ...
557e1fe74adSBaptiste Daroussinaccording to the
558e1fe74adSBaptiste Daroussin.Xr printf 1
559e1fe74adSBaptiste Daroussinformat
560e1fe74adSBaptiste Daroussin.Fa fmt .
561e1fe74adSBaptiste Daroussin.It Fn sub r t s
562e1fe74adSBaptiste DaroussinSubstitutes
563e1fe74adSBaptiste Daroussin.Fa t
564e1fe74adSBaptiste Daroussinfor the first occurrence of the regular expression
565e1fe74adSBaptiste Daroussin.Fa r
566e1fe74adSBaptiste Daroussinin the string
567e1fe74adSBaptiste Daroussin.Fa s .
568e1fe74adSBaptiste DaroussinIf
569e1fe74adSBaptiste Daroussin.Fa s
570e1fe74adSBaptiste Daroussinis not given,
571e1fe74adSBaptiste Daroussin.Va $0
572e1fe74adSBaptiste Daroussinis used.
573e1fe74adSBaptiste DaroussinAn ampersand
574e1fe74adSBaptiste Daroussin.Pq Sq &
575e1fe74adSBaptiste Daroussinin
576e1fe74adSBaptiste Daroussin.Fa t
577e1fe74adSBaptiste Daroussinis replaced in string
578e1fe74adSBaptiste Daroussin.Fa s
579e1fe74adSBaptiste Daroussinwith regular expression
580e1fe74adSBaptiste Daroussin.Fa r .
581e1fe74adSBaptiste DaroussinA literal ampersand can be specified by preceding it with two backslashes
582e1fe74adSBaptiste Daroussin.Pq Sq \e\e .
583e1fe74adSBaptiste DaroussinA literal backslash can be specified by preceding it with another backslash
584e1fe74adSBaptiste Daroussin.Pq Sq \e\e .
585e1fe74adSBaptiste Daroussin.Fn sub
586e1fe74adSBaptiste Daroussinreturns the number of replacements.
587e1fe74adSBaptiste Daroussin.It Fn substr s m n
588e1fe74adSBaptiste DaroussinReturn at most the
589e1fe74adSBaptiste Daroussin.Fa n Ns -character
590e1fe74adSBaptiste Daroussinsubstring of
591e1fe74adSBaptiste Daroussin.Fa s
592e1fe74adSBaptiste Daroussinthat begins at position
593e1fe74adSBaptiste Daroussin.Fa m
594e1fe74adSBaptiste Daroussincounted from 1.
595e1fe74adSBaptiste DaroussinIf
596e1fe74adSBaptiste Daroussin.Fa n
597e1fe74adSBaptiste Daroussinis omitted, or if
598e1fe74adSBaptiste Daroussin.Fa n
599e1fe74adSBaptiste Daroussinspecifies more characters than are left in the string,
600e1fe74adSBaptiste Daroussinthe length of the substring is limited by the length of
601e1fe74adSBaptiste Daroussin.Fa s .
602e1fe74adSBaptiste Daroussin.It Fn tolower str
603e1fe74adSBaptiste DaroussinReturns a copy of
604e1fe74adSBaptiste Daroussin.Fa str
605e1fe74adSBaptiste Daroussinwith all upper-case characters translated to their
606e1fe74adSBaptiste Daroussincorresponding lower-case equivalents.
607e1fe74adSBaptiste Daroussin.It Fn toupper str
608e1fe74adSBaptiste DaroussinReturns a copy of
609e1fe74adSBaptiste Daroussin.Fa str
610e1fe74adSBaptiste Daroussinwith all lower-case characters translated to their
611e1fe74adSBaptiste Daroussincorresponding upper-case equivalents.
612e1fe74adSBaptiste Daroussin.El
613e1fe74adSBaptiste Daroussin.Ss Input/Output and General Functions
614e1fe74adSBaptiste Daroussin.Bl -tag -width "getline [var] < file"
615e1fe74adSBaptiste Daroussin.It Fn close expr
616e1fe74adSBaptiste DaroussinCloses the file or pipe
617e1fe74adSBaptiste Daroussin.Fa expr .
618e1fe74adSBaptiste Daroussin.Fa expr
619e1fe74adSBaptiste Daroussinshould match the string that was used to open the file or pipe.
620e1fe74adSBaptiste Daroussin.It Ar cmd | Ic getline Op Va var
621e1fe74adSBaptiste DaroussinRead a record of input from a stream piped from the output of
622e1fe74adSBaptiste Daroussin.Ar cmd .
623e1fe74adSBaptiste DaroussinIf
624e1fe74adSBaptiste Daroussin.Va var
625e1fe74adSBaptiste Daroussinis omitted, the variables
626e1fe74adSBaptiste Daroussin.Va $0
627e1fe74adSBaptiste Daroussinand
628e1fe74adSBaptiste Daroussin.Va NF
629e1fe74adSBaptiste Daroussinare set.
630e1fe74adSBaptiste DaroussinOtherwise
631e1fe74adSBaptiste Daroussin.Va var
632e1fe74adSBaptiste Daroussinis set.
633e1fe74adSBaptiste DaroussinIf the stream is not open, it is opened.
634e1fe74adSBaptiste DaroussinAs long as the stream remains open, subsequent calls
635e1fe74adSBaptiste Daroussinwill read subsequent records from the stream.
636e1fe74adSBaptiste DaroussinThe stream remains open until explicitly closed with a call to
637e1fe74adSBaptiste Daroussin.Fn close .
638e1fe74adSBaptiste Daroussin.Ic getline
639e1fe74adSBaptiste Daroussinreturns 1 for a successful input, 0 for end of file, and \-1 for an error.
640e1fe74adSBaptiste Daroussin.It Fn fflush [expr]
641e1fe74adSBaptiste DaroussinFlushes any buffered output for the file or pipe
642e1fe74adSBaptiste Daroussin.Fa expr ,
643e1fe74adSBaptiste Daroussinor all open files or pipes if
644e1fe74adSBaptiste Daroussin.Fa expr
645e1fe74adSBaptiste Daroussinis omitted.
646e1fe74adSBaptiste Daroussin.Fa expr
647e1fe74adSBaptiste Daroussinshould match the string that was used to open the file or pipe.
648e1fe74adSBaptiste Daroussin.It Ic getline
649e1fe74adSBaptiste DaroussinSets
650e1fe74adSBaptiste Daroussin.Va $0
651e1fe74adSBaptiste Daroussinto the next input record from the current input file.
652e1fe74adSBaptiste DaroussinThis form of
653e1fe74adSBaptiste Daroussin.Ic getline
654e1fe74adSBaptiste Daroussinsets the variables
655e1fe74adSBaptiste Daroussin.Va NF ,
656e1fe74adSBaptiste Daroussin.Va NR ,
657e1fe74adSBaptiste Daroussinand
658e1fe74adSBaptiste Daroussin.Va FNR .
659e1fe74adSBaptiste Daroussin.Ic getline
660e1fe74adSBaptiste Daroussinreturns 1 for a successful input, 0 for end of file, and \-1 for an error.
661e1fe74adSBaptiste Daroussin.It Ic getline Va var
662e1fe74adSBaptiste DaroussinSets
663e1fe74adSBaptiste Daroussin.Va $0
664e1fe74adSBaptiste Daroussinto variable
665e1fe74adSBaptiste Daroussin.Va var .
666e1fe74adSBaptiste DaroussinThis form of
667e1fe74adSBaptiste Daroussin.Ic getline
668e1fe74adSBaptiste Daroussinsets the variables
669e1fe74adSBaptiste Daroussin.Va NR
670e1fe74adSBaptiste Daroussinand
671e1fe74adSBaptiste Daroussin.Va FNR .
672e1fe74adSBaptiste Daroussin.Ic getline
673e1fe74adSBaptiste Daroussinreturns 1 for a successful input, 0 for end of file, and \-1 for an error.
674e1fe74adSBaptiste Daroussin.It Xo
675e1fe74adSBaptiste Daroussin.Ic getline Op Va var
676e1fe74adSBaptiste Daroussin.Pf \ \&< Ar file
677e1fe74adSBaptiste Daroussin.Xc
678e1fe74adSBaptiste DaroussinSets
679e1fe74adSBaptiste Daroussin.Va $0
680e1fe74adSBaptiste Daroussinto the next record from
681e1fe74adSBaptiste Daroussin.Ar file .
682e1fe74adSBaptiste DaroussinIf
683e1fe74adSBaptiste Daroussin.Va var
684e1fe74adSBaptiste Daroussinis omitted, the variables
685e1fe74adSBaptiste Daroussin.Va $0
686e1fe74adSBaptiste Daroussinand
687e1fe74adSBaptiste Daroussin.Va NF
688e1fe74adSBaptiste Daroussinare set.
689e1fe74adSBaptiste DaroussinOtherwise
690e1fe74adSBaptiste Daroussin.Va var
691e1fe74adSBaptiste Daroussinis set.
692e1fe74adSBaptiste DaroussinIf
693e1fe74adSBaptiste Daroussin.Ar file
694e1fe74adSBaptiste Daroussinis not open, it is opened.
695e1fe74adSBaptiste DaroussinAs long as the stream remains open, subsequent calls will read subsequent
696e1fe74adSBaptiste Daroussinrecords from
697e1fe74adSBaptiste Daroussin.Ar file .
698e1fe74adSBaptiste Daroussin.Ar file
699e1fe74adSBaptiste Daroussinremains open until explicitly closed with a call to
700e1fe74adSBaptiste Daroussin.Fn close .
701e1fe74adSBaptiste Daroussin.It Fn system cmd
702e1fe74adSBaptiste DaroussinExecutes
703e1fe74adSBaptiste Daroussin.Fa cmd
704e1fe74adSBaptiste Daroussinand returns its exit status.
705e1fe74adSBaptiste Daroussin.El
706e1fe74adSBaptiste Daroussin.Ss Bit-Operation Functions
707e1fe74adSBaptiste Daroussin.Bl -tag -width "lshift(a, b)"
708e1fe74adSBaptiste Daroussin.It Fn compl x
709e1fe74adSBaptiste DaroussinReturns the bitwise complement of integer argument x.
71073f7ff91SWarner Losh.It Fn and v1 v2 ...
71173f7ff91SWarner LoshPerforms a bitwise AND on all arguments provided, as integers.
71273f7ff91SWarner LoshThere must be at least two values.
71373f7ff91SWarner Losh.It Fn or v1 v2 ...
71473f7ff91SWarner LoshPerforms a bitwise OR on all arguments provided, as integers.
71573f7ff91SWarner LoshThere must be at least two values.
71673f7ff91SWarner Losh.It Fn xor v1 v2 ...
71773f7ff91SWarner LoshPerforms a bitwise Exclusive-OR on all arguments provided, as integers.
71873f7ff91SWarner LoshThere must be at least two values.
719e1fe74adSBaptiste Daroussin.It Fn lshift x n
720e1fe74adSBaptiste DaroussinReturns integer argument x shifted by n bits to the left.
721e1fe74adSBaptiste Daroussin.It Fn rshift x n
722e1fe74adSBaptiste DaroussinReturns integer argument x shifted by n bits to the right.
723e1fe74adSBaptiste Daroussin.El
724e1fe74adSBaptiste Daroussin.Sh EXIT STATUS
725e1fe74adSBaptiste Daroussin.Ex -std awk
726e1fe74adSBaptiste Daroussin.Pp
727e1fe74adSBaptiste DaroussinBut note that the
728e1fe74adSBaptiste Daroussin.Ic exit
729e1fe74adSBaptiste Daroussinexpression can modify the exit status.
730e1fe74adSBaptiste Daroussin.Sh EXAMPLES
731e1fe74adSBaptiste DaroussinPrint lines longer than 72 characters:
732e1fe74adSBaptiste Daroussin.Pp
733e1fe74adSBaptiste Daroussin.Dl length($0) > 72
734e1fe74adSBaptiste Daroussin.Pp
735e1fe74adSBaptiste DaroussinPrint first two fields in opposite order:
736e1fe74adSBaptiste Daroussin.Pp
737e1fe74adSBaptiste Daroussin.Dl { print $2, $1 }
738e1fe74adSBaptiste Daroussin.Pp
739e1fe74adSBaptiste DaroussinSame, with input fields separated by comma and/or blanks and tabs:
740e1fe74adSBaptiste Daroussin.Bd -literal -offset indent
741e1fe74adSBaptiste DaroussinBEGIN { FS = ",[ \et]*|[ \et]+" }
742e1fe74adSBaptiste Daroussin      { print $2, $1 }
743e1fe74adSBaptiste Daroussin.Ed
744e1fe74adSBaptiste Daroussin.Pp
745e1fe74adSBaptiste DaroussinAdd up first column, print sum and average:
746e1fe74adSBaptiste Daroussin.Bd -literal -offset indent
747e1fe74adSBaptiste Daroussin{ s += $1 }
748e1fe74adSBaptiste DaroussinEND { print "sum is", s, " average is", s/NR }
749e1fe74adSBaptiste Daroussin.Ed
750e1fe74adSBaptiste Daroussin.Pp
751e1fe74adSBaptiste DaroussinPrint all lines between start/stop pairs:
752e1fe74adSBaptiste Daroussin.Pp
753e1fe74adSBaptiste Daroussin.Dl /start/, /stop/
754e1fe74adSBaptiste Daroussin.Pp
755e1fe74adSBaptiste DaroussinSimulate echo(1):
756e1fe74adSBaptiste Daroussin.Bd -literal -offset indent
757e1fe74adSBaptiste DaroussinBEGIN { # Simulate echo(1)
758e1fe74adSBaptiste Daroussin        for (i = 1; i < ARGC; i++) printf "%s ", ARGV[i]
759e1fe74adSBaptiste Daroussin        printf "\en"
760e1fe74adSBaptiste Daroussin        exit }
761e1fe74adSBaptiste Daroussin.Ed
762e1fe74adSBaptiste Daroussin.Pp
763e1fe74adSBaptiste DaroussinPrint an error message to standard error:
764e1fe74adSBaptiste Daroussin.Bd -literal -offset indent
765e1fe74adSBaptiste Daroussin{ print "error!" > "/dev/stderr" }
766e1fe74adSBaptiste Daroussin.Ed
767e1fe74adSBaptiste Daroussin.Sh SEE ALSO
768e1fe74adSBaptiste Daroussin.Xr cut 1 ,
769e1fe74adSBaptiste Daroussin.Xr lex 1 ,
770e1fe74adSBaptiste Daroussin.Xr printf 1 ,
771e1fe74adSBaptiste Daroussin.Xr sed 1 ,
7727d93dd0fSYuri Pankov.Xr re_format 7
773e1fe74adSBaptiste Daroussin.Rs
774e1fe74adSBaptiste Daroussin.%A A. V. Aho
775e1fe74adSBaptiste Daroussin.%A B. W. Kernighan
776e1fe74adSBaptiste Daroussin.%A P. J. Weinberger
777e1fe74adSBaptiste Daroussin.%T The AWK Programming Language
778e1fe74adSBaptiste Daroussin.%I Addison-Wesley
779e1fe74adSBaptiste Daroussin.%D 1988
780e1fe74adSBaptiste Daroussin.%O ISBN 0-201-07981-X
781e1fe74adSBaptiste Daroussin.Re
782e1fe74adSBaptiste Daroussin.Sh STANDARDS
783e1fe74adSBaptiste DaroussinThe
784e1fe74adSBaptiste Daroussin.Nm
785e1fe74adSBaptiste Daroussinutility is compliant with the
786e1fe74adSBaptiste Daroussin.St -p1003.1-2008
787e1fe74adSBaptiste Daroussinspecification,
788e1fe74adSBaptiste Daroussinexcept
789e1fe74adSBaptiste Daroussin.Nm
790e1fe74adSBaptiste Daroussindoes not support {n,m} pattern matching.
791e1fe74adSBaptiste Daroussin.Pp
792e1fe74adSBaptiste DaroussinThe flags
7937d93dd0fSYuri Pankov.Fl d ,
7947d93dd0fSYuri Pankov.Fl safe ,
795e1fe74adSBaptiste Daroussinand
7967d93dd0fSYuri Pankov.Fl version
797e1fe74adSBaptiste Daroussinas well as the commands
798e1fe74adSBaptiste Daroussin.Cm fflush , compl , and , or ,
799e1fe74adSBaptiste Daroussin.Cm xor , lshift , rshift ,
800e1fe74adSBaptiste Daroussinare extensions to that specification.
801e1fe74adSBaptiste Daroussin.Sh HISTORY
802e1fe74adSBaptiste DaroussinAn
803e1fe74adSBaptiste Daroussin.Nm
804e1fe74adSBaptiste Daroussinutility appeared in
805e1fe74adSBaptiste Daroussin.At v7 .
806e1fe74adSBaptiste Daroussin.Sh BUGS
807e1fe74adSBaptiste DaroussinThere are no explicit conversions between numbers and strings.
808e1fe74adSBaptiste DaroussinTo force an expression to be treated as a number add 0 to it;
809e1fe74adSBaptiste Daroussinto force it to be treated as a string concatenate
810e1fe74adSBaptiste Daroussin.Li \&""
811e1fe74adSBaptiste Daroussinto it.
812e1fe74adSBaptiste Daroussin.Pp
813e1fe74adSBaptiste DaroussinThe scope rules for variables in functions are a botch;
814e1fe74adSBaptiste Daroussinthe syntax is worse.
815*4e52f5dbSWarner Losh.Sh DEPRECATED BEHAVIOR
816*4e52f5dbSWarner LoshOne True Awk has accpeted
817*4e52f5dbSWarner Losh.Fl Ft
818*4e52f5dbSWarner Loshto mean the same as
819*4e52f5dbSWarner Losh.Fl F\t
820*4e52f5dbSWarner Loshto make it easier to specify tabs as the separator character.
821*4e52f5dbSWarner LoshUpstream One True Awk has deprecated this wart in the name of better
822*4e52f5dbSWarner Loshcompatibility with other awk implementations like gawk and mawk.
823