summaryrefslogtreecommitdiff
path: root/usr/src/man/man1/oawk.1
diff options
context:
space:
mode:
Diffstat (limited to 'usr/src/man/man1/oawk.1')
-rw-r--r--usr/src/man/man1/oawk.1597
1 files changed, 597 insertions, 0 deletions
diff --git a/usr/src/man/man1/oawk.1 b/usr/src/man/man1/oawk.1
new file mode 100644
index 0000000000..da7626418c
--- /dev/null
+++ b/usr/src/man/man1/oawk.1
@@ -0,0 +1,597 @@
+.\"
+.\" Sun Microsystems, Inc. gratefully acknowledges The Open Group for
+.\" permission to reproduce portions of its copyrighted documentation.
+.\" Original documentation from The Open Group can be obtained online at
+.\" http://www.opengroup.org/bookstore/.
+.\"
+.\" The Institute of Electrical and Electronics Engineers and The Open
+.\" Group, have given us permission to reprint portions of their
+.\" documentation.
+.\"
+.\" In the following statement, the phrase ``this text'' refers to portions
+.\" of the system documentation.
+.\"
+.\" Portions of this text are reprinted and reproduced in electronic form
+.\" in the SunOS Reference Manual, from IEEE Std 1003.1, 2004 Edition,
+.\" Standard for Information Technology -- Portable Operating System
+.\" Interface (POSIX), The Open Group Base Specifications Issue 6,
+.\" Copyright (C) 2001-2004 by the Institute of Electrical and Electronics
+.\" Engineers, Inc and The Open Group. In the event of any discrepancy
+.\" between these versions and the original IEEE and The Open Group
+.\" Standard, the original IEEE and The Open Group Standard is the referee
+.\" document. The original Standard can be obtained online at
+.\" http://www.opengroup.org/unix/online.html.
+.\"
+.\" This notice shall appear on any product containing this material.
+.\"
+.\" The contents of this file are subject to the terms of the
+.\" Common Development and Distribution License (the "License").
+.\" You may not use this file except in compliance with the License.
+.\"
+.\" You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE
+.\" or http://www.opensolaris.org/os/licensing.
+.\" See the License for the specific language governing permissions
+.\" and limitations under the License.
+.\"
+.\" When distributing Covered Code, include this CDDL HEADER in each
+.\" file and include the License file at usr/src/OPENSOLARIS.LICENSE.
+.\" If applicable, add the following below this CDDL HEADER, with the
+.\" fields enclosed by brackets "[]" replaced with your own identifying
+.\" information: Portions Copyright [yyyy] [name of copyright owner]
+.\"
+.\"
+.\" Copyright 1989 AT&T
+.\" Portions Copyright (c) 1992, X/Open Company Limited. All Rights Reserved.
+.\" Copyright (c) 2005, Sun Microsystems, Inc. All Rights Reserved
+.\" Copyright 2020 Joyent, Inc.
+.\"
+.TH OAWK 1 "Apr 20, 2020"
+.SH NAME
+oawk \- (older) pattern scanning and processing language
+.SH SYNOPSIS
+.nf
+\fB/usr/bin/oawk\fR [\fB-f\fR \fIprogfile\fR] [\fB-F\fIc\fR\fR] [' \fIprog\fR '] [\fIparameters\fR]
+ [\fIfilename\fR]...
+.fi
+
+.SH DESCRIPTION
+This command is now obsolete, and will be removed from illumos at some point.
+.sp
+.LP
+The \fB/usr/bin/oawk\fR utility scans each input \fIfilename\fR for lines that
+match any of a set of patterns specified in \fIprog\fR. The \fIprog\fR string
+must be enclosed in single quotes (\fB a\'\fR) to protect it from the shell.
+For each pattern in \fIprog\fR there can be an associated action performed when
+a line of a \fIfilename\fR matches the pattern. The set of pattern-action
+statements can appear literally as \fIprog\fR or in a file specified with the
+\fB-f\fR\fI progfile\fR option. Input files are read in order; if there are no
+files, the standard input is read. The file name \fB\&'\(mi'\fR means the
+standard input.
+.SH OPTIONS
+The following options are supported:
+.sp
+.ne 2
+.na
+\fB\fB-f\fR\fI progfile\fR \fR
+.ad
+.RS 16n
+\fBoawk\fR uses the set of patterns it reads from \fIprogfile\fR.
+.RE
+
+.sp
+.ne 2
+.na
+\fB\fB-F\fR\fIc\fR \fR
+.ad
+.RS 16n
+Uses the character \fIc\fR as the field separator (FS) character. See the
+discussion of \fBFS\fR below.
+.RE
+
+.SH USAGE
+.SS "Input Lines"
+Each input line is matched against the pattern portion of every pattern-action
+statement; the associated action is performed for each matched pattern. Any
+\fIfilename\fR of the form \fIvar=value\fR is treated as an assignment, not a
+filename, and is executed at the time it would have been opened if it were a
+filename. \fIVariables\fR assigned in this manner are not available inside a
+\fBBEGIN\fR rule, and are assigned after previously specified files have been
+read.
+.sp
+.LP
+An input line is normally made up of fields separated by white spaces. (This
+default can be changed by using the \fBFS\fR built-in variable or the
+\fB-F\fR\fIc\fR option.) The default is to ignore leading blanks and to
+separate fields by blanks and/or tab characters. However, if \fBFS\fR is
+assigned a value that does not include any of the white spaces, then leading
+blanks are not ignored. The fields are denoted \fB$1\fR, \fB$2\fR,
+\fB\&.\|.\|.\fR\|; \fB$0\fR refers to the entire line.
+.SS "Pattern-action Statements"
+A pattern-action statement has the form:
+.sp
+.in +2
+.nf
+\fIpattern\fR\fB { \fR\fIaction\fR\fB } \fR
+.fi
+.in -2
+.sp
+
+.sp
+.LP
+Either pattern or action can be omitted. If there is no action, the matching
+line is printed. If there is no pattern, the action is performed on every input
+line. Pattern-action statements are separated by newlines or semicolons.
+.sp
+.LP
+Patterns are arbitrary Boolean combinations ( \fB!\fR, ||, \fB&&\fR, and
+parentheses) of relational expressions and regular expressions. A relational
+expression is one of the following:
+.sp
+.in +2
+.nf
+\fIexpression relop expression
+expression matchop regular_expression\fR
+.fi
+.in -2
+
+.sp
+.LP
+where a \fIrelop\fR is any of the six relational operators in C, and a
+\fImatchop\fR is either \fB~\fR (contains) or \fB!~\fR (does not contain). An
+\fIexpression\fR is an arithmetic expression, a relational expression, the
+special expression
+.sp
+.in +2
+.nf
+\fIvar \fRin \fIarray\fR
+.fi
+.in -2
+
+.sp
+.LP
+or a Boolean combination of these.
+.sp
+.LP
+Regular expressions are as in \fBegrep\fR(1). In patterns they must be
+surrounded by slashes. Isolated regular expressions in a pattern apply to the
+entire line. Regular expressions can also occur in relational expressions. A
+pattern can consist of two patterns separated by a comma; in this case, the
+action is performed for all lines between the occurrence of the first pattern
+to the occurrence of the second pattern.
+.sp
+.LP
+The special patterns \fBBEGIN\fR and \fBEND\fR can be used to capture control
+before the first input line has been read and after the last input line has
+been read respectively. These keywords do not combine with any other patterns.
+.SS "Built-in Variables"
+Built-in variables include:
+.sp
+.ne 2
+.na
+\fB\fBFILENAME\fR \fR
+.ad
+.RS 13n
+name of the current input file
+.RE
+
+.sp
+.ne 2
+.na
+\fB\fBFS\fR \fR
+.ad
+.RS 13n
+input field separator regular expression (default blank and tab)
+.RE
+
+.sp
+.ne 2
+.na
+\fB\fBNF\fR \fR
+.ad
+.RS 13n
+number of fields in the current record
+.RE
+
+.sp
+.ne 2
+.na
+\fB\fBNR\fR \fR
+.ad
+.RS 13n
+ordinal number of the current record
+.RE
+
+.sp
+.ne 2
+.na
+\fB\fBOFMT\fR \fR
+.ad
+.RS 13n
+output format for numbers (default \fB%.6g\fR)
+.RE
+
+.sp
+.ne 2
+.na
+\fB\fBOFS\fR \fR
+.ad
+.RS 13n
+output field separator (default blank)
+.RE
+
+.sp
+.ne 2
+.na
+\fB\fBORS\fR \fR
+.ad
+.RS 13n
+output record separator (default new-line)
+.RE
+
+.sp
+.ne 2
+.na
+\fB\fBRS\fR \fR
+.ad
+.RS 13n
+input record separator (default new-line)
+.RE
+
+.sp
+.LP
+An action is a sequence of statements. A statement can be one of the following:
+.sp
+.in +2
+.nf
+if ( \fIexpression\fR ) \fIstatement\fR [ else \fIstatement\fR ]
+while ( \fIexpression\fR ) \fIstatement\fR
+do \fIstatement\fR while ( \fIexpression\fR )
+for ( \fIexpression\fR ; \fIexpression\fR ; \fIexpression\fR ) \fIstatement\fR
+for ( \fIvar\fR in \fIarray\fR ) \fIstatement\fR
+break
+continue
+{ [ \fIstatement\fR ] .\|.\|. }
+\fIexpression\fR # commonly variable = expression
+print [ \fIexpression-list\fR ] [ >\fIexpression\fR ]
+printf format [ ,\fIexpression-list\fR ] [ >\fIexpression\fR ]
+next # skip remaining patterns on this input line
+exit [expr] # skip the rest of the input; exit status is expr
+.fi
+.in -2
+
+.sp
+.LP
+Statements are terminated by semicolons, newlines, or right braces. An empty
+expression-list stands for the whole input line. Expressions take on string or
+numeric values as appropriate, and are built using the operators \fB+\fR,
+\fB\(mi\fR, \fB*\fR, \fB/\fR, \fB%\fR, \fB^\fR and concatenation (indicated by
+a blank). The operators \fB++\fR, \fB\(mi\(mi\fR, \fB+=\fR, \fB\(mi=\fR,
+\fB*=\fR, \fB/=\fR, \fB%=\fR, \fB^=\fR, \fB>\fR, \fB>=\fR, \fB<\fR, \fB<=\fR,
+\fB==\fR, \fB!=\fR, and \fB?:\fR are also available in expressions. Variables
+can be scalars, array elements (denoted x[i]), or fields. Variables are
+initialized to the null string or zero. Array subscripts can be any string, not
+necessarily numeric; this allows for a form of associative memory. String
+constants are quoted (\fB""\fR), with the usual C escapes recognized within.
+.sp
+.LP
+The \fBprint\fR statement prints its arguments on the standard output, or on a
+file if \fB>\fR\fIexpression\fR is present, or on a pipe if '\fB|\fR\fIcmd\fR'
+is present. The output resulted from the print statement is terminated by the
+output record separator with each argument separated by the current output
+field separator. The \fBprintf\fR statement formats its expression list
+according to the format (see \fBprintf\fR(3C)).
+.SS "Built-in Functions"
+The arithmetic functions are as follows:
+.sp
+.ne 2
+.na
+\fB\fBexp\fR(\fIx\fR)\fR
+.ad
+.RS 11n
+Return the exponential function of \fIx\fR.
+.RE
+
+.sp
+.ne 2
+.na
+\fB\fBlog\fR(\fIx\fR)\fR
+.ad
+.RS 11n
+Return the natural logarithm of \fIx\fR.
+.RE
+
+.sp
+.ne 2
+.na
+\fB\fBsqrt\fR(\fIx\fR)\fR
+.ad
+.RS 11n
+Return the square root of \fIx\fR.
+.RE
+
+.sp
+.ne 2
+.na
+\fB\fBint\fR(\fIx\fR)\fR
+.ad
+.RS 11n
+Truncate its argument to an integer. It is truncated toward \fB0\fR when
+\fIx\fR >\fB 0\fR.
+.RE
+
+.sp
+.LP
+The string functions are as follows:
+.sp
+.ne 2
+.na
+\fB\fBindex(\fR\fIs\fR\fB, \fR\fIt\fR\fB)\fR\fR
+.ad
+.sp .6
+.RS 4n
+Return the position in string \fIs\fR where string \fIt\fR first occurs, or
+\fB0\fR if it does not occur at all.
+.RE
+
+.sp
+.ne 2
+.na
+\fB\fBint(\fR\fIs\fR\fB)\fR\fR
+.ad
+.sp .6
+.RS 4n
+truncates \fIs\fR to an integer value. If \fIs\fR is not specified, $0 is used.
+.RE
+
+.sp
+.ne 2
+.na
+\fB\fBlength(\fR\fIs\fR\fB)\fR\fR
+.ad
+.sp .6
+.RS 4n
+Return the length of its argument taken as a string, or of the whole line if
+there is no argument.
+.RE
+
+.sp
+.ne 2
+.na
+\fB\fBsplit(\fR\fIs\fR, \fIa\fR, \fIfs\fR\fB)\fR\fR
+.ad
+.sp .6
+.RS 4n
+Split the string \fIs\fR into array elements \fIa\fR[\fI1\fR],
+\fIa\fR[\fI2\fR], \|.\|.\|. \fIa\fR[\fIn\fR], and returns \fIn\fR. The
+separation is done with the regular expression \fIfs\fR or with the field
+separator \fBFS\fR if \fIfs\fR is not given.
+.RE
+
+.sp
+.ne 2
+.na
+\fB\fBsprintf(\fR\fIfmt\fR, \fIexpr\fR, \fIexpr\fR,\|.\|.\|.\|\fB)\fR\fR
+.ad
+.sp .6
+.RS 4n
+Format the expressions according to the \fBprintf\fR(3C) format given by
+\fIfmt\fR and returns the resulting string.
+.RE
+
+.sp
+.ne 2
+.na
+\fB\fBsubstr(\fR\fIs\fR, \fIm\fR, \fIn\fR\fB)\fR\fR
+.ad
+.sp .6
+.RS 4n
+returns the \fIn\fR-character substring of \fIs\fR that begins at position
+\fIm\fR.
+.RE
+
+.sp
+.LP
+The input/output function is as follows:
+.sp
+.ne 2
+.na
+\fB\fBgetline\fR\fR
+.ad
+.RS 11n
+Set \fB$0\fR to the next input record from the current input file.
+\fBgetline\fR returns \fB1\fR for successful input, \fB0\fR for end of file,
+and \fB\(mi1\fR for an error.
+.RE
+
+.SS "Large File Behavior"
+See \fBlargefile\fR(5) for the description of the behavior of \fBoawk\fR when
+encountering files greater than or equal to 2 Gbyte ( 2^31 bytes).
+.SH EXAMPLES
+\fBExample 1 \fRPrinting Lines Longer Than 72 Characters
+.sp
+.LP
+The following example is an \fBoawk\fR script that can be executed by an
+\fBoawk -f examplescript\fR style command. It prints lines longer than
+seventy two characters:
+
+.sp
+.in +2
+.nf
+\fBlength > 72\fR
+.fi
+.in -2
+.sp
+
+.LP
+\fBExample 2 \fRPrinting Fields in Opposite Order
+.sp
+.LP
+The following example is an \fBoawk\fR script that can be executed by an
+\fBoawk -f examplescript\fR style command. It prints the first two fields in
+opposite order:
+
+.sp
+.in +2
+.nf
+\fB{ print $2, $1 }\fR
+.fi
+.in -2
+.sp
+
+.LP
+\fBExample 3 \fRPrinting Fields in Opposite Order with the Input Fields
+Separated
+.sp
+.LP
+The following example is an \fBoawk\fR script that can be executed by an
+\fBoawk -f examplescript\fR style command. It prints the first two input
+fields in opposite order, separated by a comma, blanks or tabs:
+
+.sp
+.in +2
+.nf
+\fBBEGIN { FS = ",[ \et]*|[ \et]+" }
+ { print $2, $1 }\fR
+.fi
+.in -2
+.sp
+
+.LP
+\fBExample 4 \fRAdding Up the First Column, Printing the Sum and Average
+.sp
+.LP
+The following example is an \fBoawk\fR script that can be executed by an
+\fBoawk -f examplescript\fR style command. It adds up the first column, and
+prints the sum and average:
+
+.sp
+.in +2
+.nf
+\fB{ s += $1 }
+END { print "sum is", s, " average is", s/NR }\fR
+.fi
+.in -2
+.sp
+
+.LP
+\fBExample 5 \fRPrinting Fields in Reverse Order
+.sp
+.LP
+The following example is an \fBoawk\fR script that can be executed by an
+\fBoawk -f examplescript\fR style command. It prints fields in reverse order:
+
+.sp
+.in +2
+.nf
+\fB{ for (i = NF; i > 0; \(mi\(mii) print $i }\fR
+.fi
+.in -2
+.sp
+
+.LP
+\fBExample 6 \fRPrinting All lines Between \fBstart/stop\fR Pairs
+.sp
+.LP
+The following example is an \fBoawk\fR script that can be executed by an
+\fBoawk -f examplescript\fR style command. It prints all lines between
+start/stop pairs.
+
+.sp
+.in +2
+.nf
+\fB/start/, /stop/\fR
+.fi
+.in -2
+.sp
+
+.LP
+\fBExample 7 \fRPrinting All Lines Whose First Field is Different from the
+Previous One
+.sp
+.LP
+The following example is an \fBoawk\fR script that can be executed by an
+\fBoawk -f examplescript\fR style command. It prints all lines whose first
+field is different from the previous one.
+
+.sp
+.in +2
+.nf
+\fB$1 != prev { print; prev = $1 }\fR
+.fi
+.in -2
+.sp
+
+.LP
+\fBExample 8 \fRPrinting a File and Filling in Page numbers
+.sp
+.LP
+The following example is an \fBoawk\fR script that can be executed by an
+\fBoawk -f examplescript\fR style command. It prints a file and fills in page
+numbers starting at 5:
+
+.sp
+.in +2
+.nf
+\fB/Page/ { $2 = n++; }
+ { print }\fR
+.fi
+.in -2
+.sp
+
+.LP
+\fBExample 9 \fRPrinting a File and Numbering Its Pages
+.sp
+.LP
+Assuming this program is in a file named \fBprog\fR, the following example
+prints the file \fBinput\fR numbering its pages starting at \fB5\fR:
+
+.sp
+.in +2
+.nf
+example% \fBoawk -f prog n=5 input\fR
+.fi
+.in -2
+.sp
+
+.SH ENVIRONMENT VARIABLES
+See \fBenviron\fR(5) for descriptions of the following environment variables
+that affect the execution of \fBoawk\fR: \fBLANG\fR, \fBLC_ALL\fR,
+\fBLC_COLLATE\fR, \fBLC_CTYPE\fR, \fBLC_MESSAGES\fR, \fBNLSPATH\fR, and
+\fBPATH\fR.
+.sp
+.ne 2
+.na
+\fB\fBLC_NUMERIC\fR\fR
+.ad
+.RS 14n
+Determine the radix character used when interpreting numeric input,
+performing conversions between numeric and string values and formatting
+numeric output. Regardless of locale, the period character (the
+decimal-point character of the POSIX locale) is the decimal-point character
+recognized in processing \fBoawk\fR programs (including assignments in
+command-line arguments).
+.RE
+
+.SH ATTRIBUTES
+See \fBattributes\fR(5) for descriptions of the following attributes:
+.SS "/usr/bin/oawk"
+
+.TS
+box;
+c | c
+l | l .
+ATTRIBUTE TYPE ATTRIBUTE VALUE
+_
+CSI Not Enabled
+.TE
+
+.SH SEE ALSO
+\fBegrep\fR(1), \fBgrep\fR(1), \fBawk\fR(1), \fBsed\fR(1), \fBprintf\fR(3C),
+\fBattributes\fR(5), \fBenviron\fR(5), \fBlargefile\fR(5), \fBstandards\fR(5)
+.SH NOTES
+Input white space is not preserved on output if fields are involved.
+.sp
+.LP
+There are no explicit conversions between numbers and strings. To force an
+expression to be treated as a number, add \fB0\fR to it. To force an expression
+to be treated as a string, concatenate the null string (\fB""\fR) to it.