Blame


1 e7c5e5ed 2009-08-18 mt4swm .TH AWK 1
2 e7c5e5ed 2009-08-18 mt4swm .SH NAME
3 e7c5e5ed 2009-08-18 mt4swm awk \- pattern-directed scanning and processing language
4 e7c5e5ed 2009-08-18 mt4swm .SH SYNOPSIS
5 e7c5e5ed 2009-08-18 mt4swm .B awk
6 e7c5e5ed 2009-08-18 mt4swm [
7 e7c5e5ed 2009-08-18 mt4swm .B -F
8 e7c5e5ed 2009-08-18 mt4swm .I fs
9 e7c5e5ed 2009-08-18 mt4swm ]
10 e7c5e5ed 2009-08-18 mt4swm [
11 e7c5e5ed 2009-08-18 mt4swm .B -d
12 e7c5e5ed 2009-08-18 mt4swm ]
13 e7c5e5ed 2009-08-18 mt4swm [
14 e7c5e5ed 2009-08-18 mt4swm .BI -mf
15 e7c5e5ed 2009-08-18 mt4swm .I n
16 e7c5e5ed 2009-08-18 mt4swm ]
17 e7c5e5ed 2009-08-18 mt4swm [
18 e7c5e5ed 2009-08-18 mt4swm .B -mr
19 e7c5e5ed 2009-08-18 mt4swm .I n
20 e7c5e5ed 2009-08-18 mt4swm ]
21 e7c5e5ed 2009-08-18 mt4swm [
22 e7c5e5ed 2009-08-18 mt4swm .B -safe
23 e7c5e5ed 2009-08-18 mt4swm ]
24 e7c5e5ed 2009-08-18 mt4swm [
25 e7c5e5ed 2009-08-18 mt4swm .B -v
26 e7c5e5ed 2009-08-18 mt4swm .I var=value
27 e7c5e5ed 2009-08-18 mt4swm ]
28 e7c5e5ed 2009-08-18 mt4swm [
29 e7c5e5ed 2009-08-18 mt4swm .B -f
30 e7c5e5ed 2009-08-18 mt4swm .I progfile
31 e7c5e5ed 2009-08-18 mt4swm |
32 e7c5e5ed 2009-08-18 mt4swm .I prog
33 e7c5e5ed 2009-08-18 mt4swm ]
34 e7c5e5ed 2009-08-18 mt4swm [
35 e7c5e5ed 2009-08-18 mt4swm .I file ...
36 e7c5e5ed 2009-08-18 mt4swm ]
37 e7c5e5ed 2009-08-18 mt4swm .SH DESCRIPTION
38 e7c5e5ed 2009-08-18 mt4swm .I Awk
39 e7c5e5ed 2009-08-18 mt4swm scans each input
40 e7c5e5ed 2009-08-18 mt4swm .I file
41 e7c5e5ed 2009-08-18 mt4swm for lines that match any of a set of patterns specified literally in
42 e7c5e5ed 2009-08-18 mt4swm .I prog
43 e7c5e5ed 2009-08-18 mt4swm or in one or more files
44 e7c5e5ed 2009-08-18 mt4swm specified as
45 e7c5e5ed 2009-08-18 mt4swm .B -f
46 e7c5e5ed 2009-08-18 mt4swm .IR progfile .
47 e7c5e5ed 2009-08-18 mt4swm With each pattern
48 e7c5e5ed 2009-08-18 mt4swm there can be an associated action that will be performed
49 e7c5e5ed 2009-08-18 mt4swm when a line of a
50 e7c5e5ed 2009-08-18 mt4swm .I file
51 e7c5e5ed 2009-08-18 mt4swm matches the pattern.
52 e7c5e5ed 2009-08-18 mt4swm Each line is matched against the
53 e7c5e5ed 2009-08-18 mt4swm pattern portion of every pattern-action statement;
54 e7c5e5ed 2009-08-18 mt4swm the associated action is performed for each matched pattern.
55 e7c5e5ed 2009-08-18 mt4swm The file name
56 e7c5e5ed 2009-08-18 mt4swm .L -
57 e7c5e5ed 2009-08-18 mt4swm means the standard input.
58 e7c5e5ed 2009-08-18 mt4swm Any
59 e7c5e5ed 2009-08-18 mt4swm .IR file
60 e7c5e5ed 2009-08-18 mt4swm of the form
61 e7c5e5ed 2009-08-18 mt4swm .I var=value
62 e7c5e5ed 2009-08-18 mt4swm is treated as an assignment, not a file name,
63 e7c5e5ed 2009-08-18 mt4swm and is executed at the time it would have been opened if it were a file name.
64 e7c5e5ed 2009-08-18 mt4swm The option
65 e7c5e5ed 2009-08-18 mt4swm .B -v
66 e7c5e5ed 2009-08-18 mt4swm followed by
67 e7c5e5ed 2009-08-18 mt4swm .I var=value
68 e7c5e5ed 2009-08-18 mt4swm is an assignment to be done before the program
69 e7c5e5ed 2009-08-18 mt4swm is executed;
70 e7c5e5ed 2009-08-18 mt4swm any number of
71 e7c5e5ed 2009-08-18 mt4swm .B -v
72 e7c5e5ed 2009-08-18 mt4swm options may be present.
73 e7c5e5ed 2009-08-18 mt4swm .B -F
74 e7c5e5ed 2009-08-18 mt4swm .IR fs
75 e7c5e5ed 2009-08-18 mt4swm option defines the input field separator to be the regular expression
76 e7c5e5ed 2009-08-18 mt4swm .IR fs .
77 e7c5e5ed 2009-08-18 mt4swm .PP
78 e7c5e5ed 2009-08-18 mt4swm An input line is normally made up of fields separated by white space,
79 e7c5e5ed 2009-08-18 mt4swm or by regular expression
80 e7c5e5ed 2009-08-18 mt4swm .BR FS .
81 e7c5e5ed 2009-08-18 mt4swm The fields are denoted
82 e7c5e5ed 2009-08-18 mt4swm .BR $1 ,
83 e7c5e5ed 2009-08-18 mt4swm .BR $2 ,
84 e7c5e5ed 2009-08-18 mt4swm \&..., while
85 e7c5e5ed 2009-08-18 mt4swm .B $0
86 e7c5e5ed 2009-08-18 mt4swm refers to the entire line.
87 e7c5e5ed 2009-08-18 mt4swm If
88 e7c5e5ed 2009-08-18 mt4swm .BR FS
89 e7c5e5ed 2009-08-18 mt4swm is null, the input line is split into one field per character.
90 e7c5e5ed 2009-08-18 mt4swm .PP
91 e7c5e5ed 2009-08-18 mt4swm To compensate for inadequate implementation of storage management,
92 e7c5e5ed 2009-08-18 mt4swm the
93 e7c5e5ed 2009-08-18 mt4swm .B -mr
94 e7c5e5ed 2009-08-18 mt4swm option can be used to set the maximum size of the input record,
95 e7c5e5ed 2009-08-18 mt4swm and the
96 e7c5e5ed 2009-08-18 mt4swm .B -mf
97 e7c5e5ed 2009-08-18 mt4swm option to set the maximum number of fields.
98 e7c5e5ed 2009-08-18 mt4swm .PP
99 e7c5e5ed 2009-08-18 mt4swm The
100 e7c5e5ed 2009-08-18 mt4swm .B -safe
101 e7c5e5ed 2009-08-18 mt4swm option causes
102 e7c5e5ed 2009-08-18 mt4swm .I awk
103 e7c5e5ed 2009-08-18 mt4swm to run in
104 e7c5e5ed 2009-08-18 mt4swm ``safe mode,''
105 e7c5e5ed 2009-08-18 mt4swm in which it is not allowed to
106 e7c5e5ed 2009-08-18 mt4swm run shell commands or open files
107 e7c5e5ed 2009-08-18 mt4swm and the environment is not made available
108 e7c5e5ed 2009-08-18 mt4swm in the
109 e7c5e5ed 2009-08-18 mt4swm .B ENVIRON
110 e7c5e5ed 2009-08-18 mt4swm variable.
111 e7c5e5ed 2009-08-18 mt4swm .PP
112 e7c5e5ed 2009-08-18 mt4swm A pattern-action statement has the form
113 e7c5e5ed 2009-08-18 mt4swm .IP
114 e7c5e5ed 2009-08-18 mt4swm .IB pattern " { " action " }
115 e7c5e5ed 2009-08-18 mt4swm .PP
116 e7c5e5ed 2009-08-18 mt4swm A missing
117 e7c5e5ed 2009-08-18 mt4swm .BI { " action " }
118 e7c5e5ed 2009-08-18 mt4swm means print the line;
119 e7c5e5ed 2009-08-18 mt4swm a missing pattern always matches.
120 e7c5e5ed 2009-08-18 mt4swm Pattern-action statements are separated by newlines or semicolons.
121 e7c5e5ed 2009-08-18 mt4swm .PP
122 e7c5e5ed 2009-08-18 mt4swm An action is a sequence of statements.
123 e7c5e5ed 2009-08-18 mt4swm A statement can be one of the following:
124 e7c5e5ed 2009-08-18 mt4swm .PP
125 e7c5e5ed 2009-08-18 mt4swm .EX
126 e7c5e5ed 2009-08-18 mt4swm .ta \w'\fLdelete array[expression]'u
127 e7c5e5ed 2009-08-18 mt4swm if(\fI expression \fP)\fI statement \fP\fR[ \fPelse\fI statement \fP\fR]\fP
128 e7c5e5ed 2009-08-18 mt4swm while(\fI expression \fP)\fI statement\fP
129 e7c5e5ed 2009-08-18 mt4swm for(\fI expression \fP;\fI expression \fP;\fI expression \fP)\fI statement\fP
130 e7c5e5ed 2009-08-18 mt4swm for(\fI var \fPin\fI array \fP)\fI statement\fP
131 e7c5e5ed 2009-08-18 mt4swm do\fI statement \fPwhile(\fI expression \fP)
132 e7c5e5ed 2009-08-18 mt4swm break
133 e7c5e5ed 2009-08-18 mt4swm continue
134 e7c5e5ed 2009-08-18 mt4swm {\fR [\fP\fI statement ... \fP\fR] \fP}
135 e7c5e5ed 2009-08-18 mt4swm \fIexpression\fP #\fR commonly\fP\fI var = expression\fP
136 e7c5e5ed 2009-08-18 mt4swm print\fR [ \fP\fIexpression-list \fP\fR] \fP\fR[ \fP>\fI expression \fP\fR]\fP
137 e7c5e5ed 2009-08-18 mt4swm printf\fI format \fP\fR[ \fP,\fI expression-list \fP\fR] \fP\fR[ \fP>\fI expression \fP\fR]\fP
138 e7c5e5ed 2009-08-18 mt4swm return\fR [ \fP\fIexpression \fP\fR]\fP
139 e7c5e5ed 2009-08-18 mt4swm next #\fR skip remaining patterns on this input line\fP
140 e7c5e5ed 2009-08-18 mt4swm nextfile #\fR skip rest of this file, open next, start at top\fP
141 e7c5e5ed 2009-08-18 mt4swm delete\fI array\fP[\fI expression \fP] #\fR delete an array element\fP
142 e7c5e5ed 2009-08-18 mt4swm delete\fI array\fP #\fR delete all elements of array\fP
143 e7c5e5ed 2009-08-18 mt4swm exit\fR [ \fP\fIexpression \fP\fR]\fP #\fR exit immediately; status is \fP\fIexpression\fP
144 e7c5e5ed 2009-08-18 mt4swm .EE
145 e7c5e5ed 2009-08-18 mt4swm .DT
146 e7c5e5ed 2009-08-18 mt4swm .PP
147 e7c5e5ed 2009-08-18 mt4swm Statements are terminated by
148 e7c5e5ed 2009-08-18 mt4swm semicolons, newlines or right braces.
149 e7c5e5ed 2009-08-18 mt4swm An empty
150 e7c5e5ed 2009-08-18 mt4swm .I expression-list
151 e7c5e5ed 2009-08-18 mt4swm stands for
152 e7c5e5ed 2009-08-18 mt4swm .BR $0 .
153 e7c5e5ed 2009-08-18 mt4swm String constants are quoted \&\fL"\ "\fR,
154 e7c5e5ed 2009-08-18 mt4swm with the usual C escapes recognized within.
155 e7c5e5ed 2009-08-18 mt4swm Expressions take on string or numeric values as appropriate,
156 e7c5e5ed 2009-08-18 mt4swm and are built using the operators
157 e7c5e5ed 2009-08-18 mt4swm .B + \- * / % ^
158 e7c5e5ed 2009-08-18 mt4swm (exponentiation), and concatenation (indicated by white space).
159 e7c5e5ed 2009-08-18 mt4swm The operators
160 e7c5e5ed 2009-08-18 mt4swm .B
161 e7c5e5ed 2009-08-18 mt4swm ! ++ \-\- += \-= *= /= %= ^= > >= < <= == != ?:
162 e7c5e5ed 2009-08-18 mt4swm are also available in expressions.
163 e7c5e5ed 2009-08-18 mt4swm Variables may be scalars, array elements
164 e7c5e5ed 2009-08-18 mt4swm (denoted
165 e7c5e5ed 2009-08-18 mt4swm .IB x [ i ] )
166 e7c5e5ed 2009-08-18 mt4swm or fields.
167 e7c5e5ed 2009-08-18 mt4swm Variables are initialized to the null string.
168 e7c5e5ed 2009-08-18 mt4swm Array subscripts may be any string,
169 e7c5e5ed 2009-08-18 mt4swm not necessarily numeric;
170 e7c5e5ed 2009-08-18 mt4swm this allows for a form of associative memory.
171 e7c5e5ed 2009-08-18 mt4swm Multiple subscripts such as
172 e7c5e5ed 2009-08-18 mt4swm .B [i,j,k]
173 e7c5e5ed 2009-08-18 mt4swm are permitted; the constituents are concatenated,
174 e7c5e5ed 2009-08-18 mt4swm separated by the value of
175 e7c5e5ed 2009-08-18 mt4swm .BR SUBSEP .
176 e7c5e5ed 2009-08-18 mt4swm .PP
177 e7c5e5ed 2009-08-18 mt4swm The
178 e7c5e5ed 2009-08-18 mt4swm .B print
179 e7c5e5ed 2009-08-18 mt4swm statement prints its arguments on the standard output
180 e7c5e5ed 2009-08-18 mt4swm (or on a file if
181 e7c5e5ed 2009-08-18 mt4swm .BI > file
182 e7c5e5ed 2009-08-18 mt4swm or
183 e7c5e5ed 2009-08-18 mt4swm .BI >> file
184 e7c5e5ed 2009-08-18 mt4swm is present or on a pipe if
185 e7c5e5ed 2009-08-18 mt4swm .BI | cmd
186 e7c5e5ed 2009-08-18 mt4swm is present), separated by the current output field separator,
187 e7c5e5ed 2009-08-18 mt4swm and terminated by the output record separator.
188 e7c5e5ed 2009-08-18 mt4swm .I file
189 e7c5e5ed 2009-08-18 mt4swm and
190 e7c5e5ed 2009-08-18 mt4swm .I cmd
191 e7c5e5ed 2009-08-18 mt4swm may be literal names or parenthesized expressions;
192 e7c5e5ed 2009-08-18 mt4swm identical string values in different statements denote
193 e7c5e5ed 2009-08-18 mt4swm the same open file.
194 e7c5e5ed 2009-08-18 mt4swm The
195 e7c5e5ed 2009-08-18 mt4swm .B printf
196 e7c5e5ed 2009-08-18 mt4swm statement formats its expression list according to the format
197 e7c5e5ed 2009-08-18 mt4swm (see
198 e7c5e5ed 2009-08-18 mt4swm .IR fprintf (3)) .
199 e7c5e5ed 2009-08-18 mt4swm The built-in function
200 e7c5e5ed 2009-08-18 mt4swm .BI close( expr )
201 e7c5e5ed 2009-08-18 mt4swm closes the file or pipe
202 e7c5e5ed 2009-08-18 mt4swm .IR expr .
203 e7c5e5ed 2009-08-18 mt4swm The built-in function
204 e7c5e5ed 2009-08-18 mt4swm .BI fflush( expr )
205 e7c5e5ed 2009-08-18 mt4swm flushes any buffered output for the file or pipe
206 e7c5e5ed 2009-08-18 mt4swm .IR expr .
207 e7c5e5ed 2009-08-18 mt4swm If
208 e7c5e5ed 2009-08-18 mt4swm .IR expr
209 e7c5e5ed 2009-08-18 mt4swm is omitted or is a null string, all open files are flushed.
210 e7c5e5ed 2009-08-18 mt4swm .PP
211 e7c5e5ed 2009-08-18 mt4swm The mathematical functions
212 e7c5e5ed 2009-08-18 mt4swm .BR exp ,
213 e7c5e5ed 2009-08-18 mt4swm .BR log ,
214 e7c5e5ed 2009-08-18 mt4swm .BR sqrt ,
215 e7c5e5ed 2009-08-18 mt4swm .BR sin ,
216 e7c5e5ed 2009-08-18 mt4swm .BR cos ,
217 e7c5e5ed 2009-08-18 mt4swm and
218 e7c5e5ed 2009-08-18 mt4swm .BR atan2
219 e7c5e5ed 2009-08-18 mt4swm are built in.
220 e7c5e5ed 2009-08-18 mt4swm Other built-in functions:
221 e7c5e5ed 2009-08-18 mt4swm .TF length
222 e7c5e5ed 2009-08-18 mt4swm .TP
223 e7c5e5ed 2009-08-18 mt4swm .B length
224 e7c5e5ed 2009-08-18 mt4swm If its argument is a string, the string's length is returned.
225 e7c5e5ed 2009-08-18 mt4swm If its argument is an array, the number of subscripts in the array is returned.
226 e7c5e5ed 2009-08-18 mt4swm If no argument, the length of
227 e7c5e5ed 2009-08-18 mt4swm .B $0
228 e7c5e5ed 2009-08-18 mt4swm is returned.
229 e7c5e5ed 2009-08-18 mt4swm .TP
230 e7c5e5ed 2009-08-18 mt4swm .B rand
231 e7c5e5ed 2009-08-18 mt4swm random number on (0,1)
232 e7c5e5ed 2009-08-18 mt4swm .TP
233 e7c5e5ed 2009-08-18 mt4swm .B srand
234 e7c5e5ed 2009-08-18 mt4swm sets seed for
235 e7c5e5ed 2009-08-18 mt4swm .B rand
236 e7c5e5ed 2009-08-18 mt4swm and returns the previous seed.
237 e7c5e5ed 2009-08-18 mt4swm .TP
238 e7c5e5ed 2009-08-18 mt4swm .B int
239 e7c5e5ed 2009-08-18 mt4swm truncates to an integer value
240 e7c5e5ed 2009-08-18 mt4swm .TP
241 e7c5e5ed 2009-08-18 mt4swm .B utf
242 e7c5e5ed 2009-08-18 mt4swm converts its numerical argument, a character number, to a
243 e7c5e5ed 2009-08-18 mt4swm .SM UTF
244 e7c5e5ed 2009-08-18 mt4swm string
245 e7c5e5ed 2009-08-18 mt4swm .TP
246 e7c5e5ed 2009-08-18 mt4swm .BI substr( s , " m" , " n\fL)
247 e7c5e5ed 2009-08-18 mt4swm the
248 e7c5e5ed 2009-08-18 mt4swm .IR n -character
249 e7c5e5ed 2009-08-18 mt4swm substring of
250 e7c5e5ed 2009-08-18 mt4swm .I s
251 e7c5e5ed 2009-08-18 mt4swm that begins at position
252 e7c5e5ed 2009-08-18 mt4swm .IR m
253 e7c5e5ed 2009-08-18 mt4swm counted from 1.
254 e7c5e5ed 2009-08-18 mt4swm .TP
255 e7c5e5ed 2009-08-18 mt4swm .BI index( s , " t" )
256 e7c5e5ed 2009-08-18 mt4swm the position in
257 e7c5e5ed 2009-08-18 mt4swm .I s
258 e7c5e5ed 2009-08-18 mt4swm where the string
259 e7c5e5ed 2009-08-18 mt4swm .I t
260 e7c5e5ed 2009-08-18 mt4swm occurs, or 0 if it does not.
261 e7c5e5ed 2009-08-18 mt4swm .TP
262 e7c5e5ed 2009-08-18 mt4swm .BI match( s , " r" )
263 e7c5e5ed 2009-08-18 mt4swm the position in
264 e7c5e5ed 2009-08-18 mt4swm .I s
265 e7c5e5ed 2009-08-18 mt4swm where the regular expression
266 e7c5e5ed 2009-08-18 mt4swm .I r
267 e7c5e5ed 2009-08-18 mt4swm occurs, or 0 if it does not.
268 e7c5e5ed 2009-08-18 mt4swm The variables
269 e7c5e5ed 2009-08-18 mt4swm .B RSTART
270 e7c5e5ed 2009-08-18 mt4swm and
271 e7c5e5ed 2009-08-18 mt4swm .B RLENGTH
272 e7c5e5ed 2009-08-18 mt4swm are set to the position and length of the matched string.
273 e7c5e5ed 2009-08-18 mt4swm .TP
274 e7c5e5ed 2009-08-18 mt4swm .BI split( s , " a" , " fs\fL)
275 e7c5e5ed 2009-08-18 mt4swm splits the string
276 e7c5e5ed 2009-08-18 mt4swm .I s
277 e7c5e5ed 2009-08-18 mt4swm into array elements
278 e7c5e5ed 2009-08-18 mt4swm .IB a [1]\f1,
279 e7c5e5ed 2009-08-18 mt4swm .IB a [2]\f1,
280 e7c5e5ed 2009-08-18 mt4swm \&...,
281 e7c5e5ed 2009-08-18 mt4swm .IB a [ n ]\f1,
282 e7c5e5ed 2009-08-18 mt4swm and returns
283 e7c5e5ed 2009-08-18 mt4swm .IR n .
284 e7c5e5ed 2009-08-18 mt4swm The separation is done with the regular expression
285 e7c5e5ed 2009-08-18 mt4swm .I fs
286 e7c5e5ed 2009-08-18 mt4swm or with the field separator
287 e7c5e5ed 2009-08-18 mt4swm .B FS
288 e7c5e5ed 2009-08-18 mt4swm if
289 e7c5e5ed 2009-08-18 mt4swm .I fs
290 e7c5e5ed 2009-08-18 mt4swm is not given.
291 e7c5e5ed 2009-08-18 mt4swm An empty string as field separator splits the string
292 e7c5e5ed 2009-08-18 mt4swm into one array element per character.
293 e7c5e5ed 2009-08-18 mt4swm .TP
294 e7c5e5ed 2009-08-18 mt4swm .BI sub( r , " t" , " s\fL)
295 e7c5e5ed 2009-08-18 mt4swm substitutes
296 e7c5e5ed 2009-08-18 mt4swm .I t
297 e7c5e5ed 2009-08-18 mt4swm for the first occurrence of the regular expression
298 e7c5e5ed 2009-08-18 mt4swm .I r
299 e7c5e5ed 2009-08-18 mt4swm in the string
300 e7c5e5ed 2009-08-18 mt4swm .IR s .
301 e7c5e5ed 2009-08-18 mt4swm If
302 e7c5e5ed 2009-08-18 mt4swm .I s
303 e7c5e5ed 2009-08-18 mt4swm is not given,
304 e7c5e5ed 2009-08-18 mt4swm .B $0
305 e7c5e5ed 2009-08-18 mt4swm is used.
306 e7c5e5ed 2009-08-18 mt4swm .TP
307 e7c5e5ed 2009-08-18 mt4swm .B gsub
308 e7c5e5ed 2009-08-18 mt4swm same as
309 e7c5e5ed 2009-08-18 mt4swm .B sub
310 e7c5e5ed 2009-08-18 mt4swm except that all occurrences of the regular expression
311 e7c5e5ed 2009-08-18 mt4swm are replaced;
312 e7c5e5ed 2009-08-18 mt4swm .B sub
313 e7c5e5ed 2009-08-18 mt4swm and
314 e7c5e5ed 2009-08-18 mt4swm .B gsub
315 e7c5e5ed 2009-08-18 mt4swm return the number of replacements.
316 e7c5e5ed 2009-08-18 mt4swm .TP
317 e7c5e5ed 2009-08-18 mt4swm .BI sprintf( fmt , " expr" , " ...\fL)
318 e7c5e5ed 2009-08-18 mt4swm the string resulting from formatting
319 e7c5e5ed 2009-08-18 mt4swm .I expr ...
320 e7c5e5ed 2009-08-18 mt4swm according to the
321 e7c5e5ed 2009-08-18 mt4swm .I printf
322 e7c5e5ed 2009-08-18 mt4swm format
323 e7c5e5ed 2009-08-18 mt4swm .I fmt
324 e7c5e5ed 2009-08-18 mt4swm .TP
325 e7c5e5ed 2009-08-18 mt4swm .BI system( cmd )
326 e7c5e5ed 2009-08-18 mt4swm executes
327 e7c5e5ed 2009-08-18 mt4swm .I cmd
328 e7c5e5ed 2009-08-18 mt4swm and returns its exit status
329 e7c5e5ed 2009-08-18 mt4swm .TP
330 e7c5e5ed 2009-08-18 mt4swm .BI tolower( str )
331 e7c5e5ed 2009-08-18 mt4swm returns a copy of
332 e7c5e5ed 2009-08-18 mt4swm .I str
333 e7c5e5ed 2009-08-18 mt4swm with all upper-case characters translated to their
334 e7c5e5ed 2009-08-18 mt4swm corresponding lower-case equivalents.
335 e7c5e5ed 2009-08-18 mt4swm .TP
336 e7c5e5ed 2009-08-18 mt4swm .BI toupper( str )
337 e7c5e5ed 2009-08-18 mt4swm returns a copy of
338 e7c5e5ed 2009-08-18 mt4swm .I str
339 e7c5e5ed 2009-08-18 mt4swm with all lower-case characters translated to their
340 e7c5e5ed 2009-08-18 mt4swm corresponding upper-case equivalents.
341 e7c5e5ed 2009-08-18 mt4swm .PD
342 e7c5e5ed 2009-08-18 mt4swm .PP
343 e7c5e5ed 2009-08-18 mt4swm The ``function''
344 e7c5e5ed 2009-08-18 mt4swm .B getline
345 e7c5e5ed 2009-08-18 mt4swm sets
346 e7c5e5ed 2009-08-18 mt4swm .B $0
347 e7c5e5ed 2009-08-18 mt4swm to the next input record from the current input file;
348 e7c5e5ed 2009-08-18 mt4swm .B getline
349 e7c5e5ed 2009-08-18 mt4swm .BI < file
350 e7c5e5ed 2009-08-18 mt4swm sets
351 e7c5e5ed 2009-08-18 mt4swm .B $0
352 e7c5e5ed 2009-08-18 mt4swm to the next record from
353 e7c5e5ed 2009-08-18 mt4swm .IR file .
354 e7c5e5ed 2009-08-18 mt4swm .B getline
355 e7c5e5ed 2009-08-18 mt4swm .I x
356 e7c5e5ed 2009-08-18 mt4swm sets variable
357 e7c5e5ed 2009-08-18 mt4swm .I x
358 e7c5e5ed 2009-08-18 mt4swm instead.
359 e7c5e5ed 2009-08-18 mt4swm Finally,
360 e7c5e5ed 2009-08-18 mt4swm .IB cmd " | getline
361 e7c5e5ed 2009-08-18 mt4swm pipes the output of
362 e7c5e5ed 2009-08-18 mt4swm .I cmd
363 e7c5e5ed 2009-08-18 mt4swm into
364 e7c5e5ed 2009-08-18 mt4swm .BR getline ;
365 e7c5e5ed 2009-08-18 mt4swm each call of
366 e7c5e5ed 2009-08-18 mt4swm .B getline
367 e7c5e5ed 2009-08-18 mt4swm returns the next line of output from
368 e7c5e5ed 2009-08-18 mt4swm .IR cmd .
369 e7c5e5ed 2009-08-18 mt4swm In all cases,
370 e7c5e5ed 2009-08-18 mt4swm .B getline
371 e7c5e5ed 2009-08-18 mt4swm returns 1 for a successful input,
372 e7c5e5ed 2009-08-18 mt4swm 0 for end of file, and \-1 for an error.
373 e7c5e5ed 2009-08-18 mt4swm .PP
374 e7c5e5ed 2009-08-18 mt4swm Patterns are arbitrary Boolean combinations
375 e7c5e5ed 2009-08-18 mt4swm (with
376 e7c5e5ed 2009-08-18 mt4swm .BR "! || &&" )
377 e7c5e5ed 2009-08-18 mt4swm of regular expressions and
378 e7c5e5ed 2009-08-18 mt4swm relational expressions.
379 e7c5e5ed 2009-08-18 mt4swm Regular expressions are as in
380 d32deab1 2020-08-16 rsc .MR regexp (7) .
381 e7c5e5ed 2009-08-18 mt4swm Isolated regular expressions
382 e7c5e5ed 2009-08-18 mt4swm in a pattern apply to the entire line.
383 e7c5e5ed 2009-08-18 mt4swm Regular expressions may also occur in
384 e7c5e5ed 2009-08-18 mt4swm relational expressions, using the operators
385 e7c5e5ed 2009-08-18 mt4swm .BR ~
386 e7c5e5ed 2009-08-18 mt4swm and
387 e7c5e5ed 2009-08-18 mt4swm .BR !~ .
388 e7c5e5ed 2009-08-18 mt4swm .BI / re /
389 e7c5e5ed 2009-08-18 mt4swm is a constant regular expression;
390 e7c5e5ed 2009-08-18 mt4swm any string (constant or variable) may be used
391 e7c5e5ed 2009-08-18 mt4swm as a regular expression, except in the position of an isolated regular expression
392 e7c5e5ed 2009-08-18 mt4swm in a pattern.
393 e7c5e5ed 2009-08-18 mt4swm .PP
394 e7c5e5ed 2009-08-18 mt4swm A pattern may consist of two patterns separated by a comma;
395 e7c5e5ed 2009-08-18 mt4swm in this case, the action is performed for all lines
396 e7c5e5ed 2009-08-18 mt4swm from an occurrence of the first pattern
397 e7c5e5ed 2009-08-18 mt4swm though an occurrence of the second.
398 e7c5e5ed 2009-08-18 mt4swm .PP
399 e7c5e5ed 2009-08-18 mt4swm A relational expression is one of the following:
400 e7c5e5ed 2009-08-18 mt4swm .IP
401 e7c5e5ed 2009-08-18 mt4swm .I expression matchop regular-expression
402 e7c5e5ed 2009-08-18 mt4swm .br
403 e7c5e5ed 2009-08-18 mt4swm .I expression relop expression
404 e7c5e5ed 2009-08-18 mt4swm .br
405 e7c5e5ed 2009-08-18 mt4swm .IB expression " in " array-name
406 e7c5e5ed 2009-08-18 mt4swm .br
407 e7c5e5ed 2009-08-18 mt4swm .BI ( expr , expr,... ") in " array-name
408 e7c5e5ed 2009-08-18 mt4swm .PP
409 e7c5e5ed 2009-08-18 mt4swm where a
410 e7c5e5ed 2009-08-18 mt4swm .I relop
411 e7c5e5ed 2009-08-18 mt4swm is any of the six relational operators in C,
412 e7c5e5ed 2009-08-18 mt4swm and a
413 e7c5e5ed 2009-08-18 mt4swm .I matchop
414 e7c5e5ed 2009-08-18 mt4swm is either
415 e7c5e5ed 2009-08-18 mt4swm .B ~
416 e7c5e5ed 2009-08-18 mt4swm (matches)
417 e7c5e5ed 2009-08-18 mt4swm or
418 e7c5e5ed 2009-08-18 mt4swm .B !~
419 e7c5e5ed 2009-08-18 mt4swm (does not match).
420 e7c5e5ed 2009-08-18 mt4swm A conditional is an arithmetic expression,
421 e7c5e5ed 2009-08-18 mt4swm a relational expression,
422 e7c5e5ed 2009-08-18 mt4swm or a Boolean combination
423 e7c5e5ed 2009-08-18 mt4swm of these.
424 e7c5e5ed 2009-08-18 mt4swm .PP
425 e7c5e5ed 2009-08-18 mt4swm The special patterns
426 e7c5e5ed 2009-08-18 mt4swm .B BEGIN
427 e7c5e5ed 2009-08-18 mt4swm and
428 e7c5e5ed 2009-08-18 mt4swm .B END
429 e7c5e5ed 2009-08-18 mt4swm may be used to capture control before the first input line is read
430 e7c5e5ed 2009-08-18 mt4swm and after the last.
431 e7c5e5ed 2009-08-18 mt4swm .B BEGIN
432 e7c5e5ed 2009-08-18 mt4swm and
433 e7c5e5ed 2009-08-18 mt4swm .B END
434 e7c5e5ed 2009-08-18 mt4swm do not combine with other patterns.
435 e7c5e5ed 2009-08-18 mt4swm .PP
436 e7c5e5ed 2009-08-18 mt4swm Variable names with special meanings:
437 e7c5e5ed 2009-08-18 mt4swm .TF FILENAME
438 e7c5e5ed 2009-08-18 mt4swm .TP
439 e7c5e5ed 2009-08-18 mt4swm .B CONVFMT
440 e7c5e5ed 2009-08-18 mt4swm conversion format used when converting numbers
441 e7c5e5ed 2009-08-18 mt4swm (default
442 e7c5e5ed 2009-08-18 mt4swm .BR "%.6g" )
443 e7c5e5ed 2009-08-18 mt4swm .TP
444 e7c5e5ed 2009-08-18 mt4swm .B FS
445 e7c5e5ed 2009-08-18 mt4swm regular expression used to separate fields; also settable
446 e7c5e5ed 2009-08-18 mt4swm by option
447 e7c5e5ed 2009-08-18 mt4swm .BI \-F fs\f1.
448 e7c5e5ed 2009-08-18 mt4swm .TP
449 e7c5e5ed 2009-08-18 mt4swm .BR NF
450 e7c5e5ed 2009-08-18 mt4swm number of fields in the current record
451 e7c5e5ed 2009-08-18 mt4swm .TP
452 e7c5e5ed 2009-08-18 mt4swm .B NR
453 e7c5e5ed 2009-08-18 mt4swm ordinal number of the current record
454 e7c5e5ed 2009-08-18 mt4swm .TP
455 e7c5e5ed 2009-08-18 mt4swm .B FNR
456 e7c5e5ed 2009-08-18 mt4swm ordinal number of the current record in the current file
457 e7c5e5ed 2009-08-18 mt4swm .TP
458 e7c5e5ed 2009-08-18 mt4swm .B FILENAME
459 e7c5e5ed 2009-08-18 mt4swm the name of the current input file
460 e7c5e5ed 2009-08-18 mt4swm .TP
461 e7c5e5ed 2009-08-18 mt4swm .B RS
462 e7c5e5ed 2009-08-18 mt4swm input record separator (default newline)
463 e7c5e5ed 2009-08-18 mt4swm .TP
464 e7c5e5ed 2009-08-18 mt4swm .B OFS
465 e7c5e5ed 2009-08-18 mt4swm output field separator (default blank)
466 e7c5e5ed 2009-08-18 mt4swm .TP
467 e7c5e5ed 2009-08-18 mt4swm .B ORS
468 e7c5e5ed 2009-08-18 mt4swm output record separator (default newline)
469 e7c5e5ed 2009-08-18 mt4swm .TP
470 e7c5e5ed 2009-08-18 mt4swm .B OFMT
471 e7c5e5ed 2009-08-18 mt4swm output format for numbers (default
472 e7c5e5ed 2009-08-18 mt4swm .BR "%.6g" )
473 e7c5e5ed 2009-08-18 mt4swm .TP
474 e7c5e5ed 2009-08-18 mt4swm .B SUBSEP
475 e7c5e5ed 2009-08-18 mt4swm separates multiple subscripts (default 034)
476 e7c5e5ed 2009-08-18 mt4swm .TP
477 e7c5e5ed 2009-08-18 mt4swm .B ARGC
478 e7c5e5ed 2009-08-18 mt4swm argument count, assignable
479 e7c5e5ed 2009-08-18 mt4swm .TP
480 e7c5e5ed 2009-08-18 mt4swm .B ARGV
481 e7c5e5ed 2009-08-18 mt4swm argument array, assignable;
482 e7c5e5ed 2009-08-18 mt4swm non-null members are taken as file names
483 e7c5e5ed 2009-08-18 mt4swm .TP
484 e7c5e5ed 2009-08-18 mt4swm .B ENVIRON
485 e7c5e5ed 2009-08-18 mt4swm array of environment variables; subscripts are names.
486 e7c5e5ed 2009-08-18 mt4swm .PD
487 e7c5e5ed 2009-08-18 mt4swm .PP
488 e7c5e5ed 2009-08-18 mt4swm Functions may be defined (at the position of a pattern-action statement) thus:
489 e7c5e5ed 2009-08-18 mt4swm .IP
490 e7c5e5ed 2009-08-18 mt4swm .L
491 e7c5e5ed 2009-08-18 mt4swm function foo(a, b, c) { ...; return x }
492 e7c5e5ed 2009-08-18 mt4swm .PP
493 e7c5e5ed 2009-08-18 mt4swm Parameters are passed by value if scalar and by reference if array name;
494 e7c5e5ed 2009-08-18 mt4swm functions may be called recursively.
495 e7c5e5ed 2009-08-18 mt4swm Parameters are local to the function; all other variables are global.
496 e7c5e5ed 2009-08-18 mt4swm Thus local variables may be created by providing excess parameters in
497 e7c5e5ed 2009-08-18 mt4swm the function definition.
498 e7c5e5ed 2009-08-18 mt4swm .SH EXAMPLES
499 e7c5e5ed 2009-08-18 mt4swm .TP
500 e7c5e5ed 2009-08-18 mt4swm .L
501 e7c5e5ed 2009-08-18 mt4swm length($0) > 72
502 e7c5e5ed 2009-08-18 mt4swm Print lines longer than 72 characters.
503 e7c5e5ed 2009-08-18 mt4swm .TP
504 e7c5e5ed 2009-08-18 mt4swm .L
505 e7c5e5ed 2009-08-18 mt4swm { print $2, $1 }
506 e7c5e5ed 2009-08-18 mt4swm Print first two fields in opposite order.
507 e7c5e5ed 2009-08-18 mt4swm .PP
508 e7c5e5ed 2009-08-18 mt4swm .EX
509 e7c5e5ed 2009-08-18 mt4swm BEGIN { FS = ",[ \et]*|[ \et]+" }
510 e7c5e5ed 2009-08-18 mt4swm { print $2, $1 }
511 e7c5e5ed 2009-08-18 mt4swm .EE
512 e7c5e5ed 2009-08-18 mt4swm .ns
513 e7c5e5ed 2009-08-18 mt4swm .IP
514 e7c5e5ed 2009-08-18 mt4swm Same, with input fields separated by comma and/or blanks and tabs.
515 e7c5e5ed 2009-08-18 mt4swm .PP
516 e7c5e5ed 2009-08-18 mt4swm .EX
517 e7c5e5ed 2009-08-18 mt4swm { s += $1 }
518 e7c5e5ed 2009-08-18 mt4swm END { print "sum is", s, " average is", s/NR }
519 e7c5e5ed 2009-08-18 mt4swm .EE
520 e7c5e5ed 2009-08-18 mt4swm .ns
521 e7c5e5ed 2009-08-18 mt4swm .IP
522 e7c5e5ed 2009-08-18 mt4swm Add up first column, print sum and average.
523 e7c5e5ed 2009-08-18 mt4swm .TP
524 e7c5e5ed 2009-08-18 mt4swm .L
525 e7c5e5ed 2009-08-18 mt4swm /start/, /stop/
526 e7c5e5ed 2009-08-18 mt4swm Print all lines between start/stop pairs.
527 e7c5e5ed 2009-08-18 mt4swm .PP
528 e7c5e5ed 2009-08-18 mt4swm .EX
529 e7c5e5ed 2009-08-18 mt4swm BEGIN { # Simulate echo(1)
530 e7c5e5ed 2009-08-18 mt4swm for (i = 1; i < ARGC; i++) printf "%s ", ARGV[i]
531 e7c5e5ed 2009-08-18 mt4swm printf "\en"
532 e7c5e5ed 2009-08-18 mt4swm exit }
533 e7c5e5ed 2009-08-18 mt4swm .EE
534 e7c5e5ed 2009-08-18 mt4swm .SH SOURCE
535 e7c5e5ed 2009-08-18 mt4swm .B \*9/src/cmd/awk
536 e7c5e5ed 2009-08-18 mt4swm .SH SEE ALSO
537 d32deab1 2020-08-16 rsc .MR sed (1) ,
538 d32deab1 2020-08-16 rsc .MR regexp (7) ,
539 e7c5e5ed 2009-08-18 mt4swm .br
540 e7c5e5ed 2009-08-18 mt4swm A. V. Aho, B. W. Kernighan, P. J. Weinberger,
541 e7c5e5ed 2009-08-18 mt4swm .I
542 e7c5e5ed 2009-08-18 mt4swm The AWK Programming Language,
543 e7c5e5ed 2009-08-18 mt4swm Addison-Wesley, 1988. ISBN 0-201-07981-X
544 e7c5e5ed 2009-08-18 mt4swm .SH BUGS
545 e7c5e5ed 2009-08-18 mt4swm There are no explicit conversions between numbers and strings.
546 e7c5e5ed 2009-08-18 mt4swm To force an expression to be treated as a number add 0 to it;
547 e7c5e5ed 2009-08-18 mt4swm to force it to be treated as a string concatenate
548 e7c5e5ed 2009-08-18 mt4swm \&\fL""\fP to it.
549 b546bd6e 2017-07-16 rsc .PP
550 e7c5e5ed 2009-08-18 mt4swm The scope rules for variables in functions are a botch;
551 e7c5e5ed 2009-08-18 mt4swm the syntax is worse.
552 b546bd6e 2017-07-16 rsc .PP
553 e7c5e5ed 2009-08-18 mt4swm UTF is not always dealt with correctly,
554 e7c5e5ed 2009-08-18 mt4swm though
555 e7c5e5ed 2009-08-18 mt4swm .I awk
556 e7c5e5ed 2009-08-18 mt4swm does make an attempt to do so.
557 e7c5e5ed 2009-08-18 mt4swm The
558 e7c5e5ed 2009-08-18 mt4swm .I split
559 e7c5e5ed 2009-08-18 mt4swm function with an empty string as final argument now copes
560 e7c5e5ed 2009-08-18 mt4swm with UTF in the string being split.