diff options
Diffstat (limited to 'usr/src/man/man7/formats.7')
-rw-r--r-- | usr/src/man/man7/formats.7 | 481 |
1 files changed, 481 insertions, 0 deletions
diff --git a/usr/src/man/man7/formats.7 b/usr/src/man/man7/formats.7 new file mode 100644 index 0000000000..1d9c7bf0b0 --- /dev/null +++ b/usr/src/man/man7/formats.7 @@ -0,0 +1,481 @@ +.\" +.\" 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 1992, X/Open Company Limited. All Rights Reserved. +.\" Portions Copyright (c) 1995, Sun Microsystems, Inc. All Rights Reserved. +.\" +.TH FORMATS 7 "Mar 28, 1995" +.SH NAME +formats \- file format notation +.SH DESCRIPTION +.sp +.LP +Utility descriptions use a syntax to describe the data organization within +files\(emstdin, stdout, stderr, input files, and output files\(emwhen that +organization is not otherwise obvious. The syntax is similar to that used by +the \fBprintf\fR(3C) function. When used for stdin or input file +descriptions, this syntax describes the format that could have been used to +write the text to be read, not a format that could be used by the +\fBscanf\fR(3C) function to read the input file. +.SS "Format" +.sp +.LP +The description of an individual record is as follows: +.sp +.in +2 +.nf +"<\fBformat\fR>", [<\fIarg1\fR>, <\fIarg2\fR>, .\|.\|., <\fIargn\fR>] +.fi +.in -2 + +.sp +.LP +The \fBformat\fR is a character string that contains three types of objects +defined below: +.sp +.ne 2 +.na +\fB\fI\fR\fIcharacters\fR\fI\fR \fR +.ad +.RS 30n +Characters that are not \fIescape sequences\fR or \fIconversion +specifications\fR, as described below, are copied to the output. +.RE + +.sp +.ne 2 +.na +\fB\fI\fR\fIescape sequences\fR\fI\fR \fR +.ad +.RS 30n +Represent non-graphic characters. +.RE + +.sp +.ne 2 +.na +\fB\fI\fR\fIconversion specifications\fR\fI\fR \fR +.ad +.RS 30n +Specifies the output format of each argument. (See below.) +.RE + +.sp +.LP +The following characters have the following special meaning in the format +string: +.sp +.ne 2 +.na +\fB`` \&''\fR +.ad +.RS 11n +(An empty character position.) One or more blank characters. +.RE + +.sp +.ne 2 +.na +\fB/\e \fR +.ad +.RS 11n +Exactly one space character. +.RE + +.sp +.LP +The notation for spaces allows some flexibility for application output. Note +that an empty character position in \fBformat\fR represents one or more blank +characters on the output (not \fIwhite space\fR, which can include newline +characters). Therefore, another utility that reads that output as its input +must be prepared to parse the data using \fBscanf\fR(3C), \fBawk\fR(1), and so +forth. The character is used when exactly one space character is output. +.SS "Escape Sequences" +.sp +.LP +The following table lists escape sequences and associated actions on display +devices capable of the action. +.sp + +.sp +.TS +c c c +l l l . +\fBSequence\fR \fBCharacter\fR \fBTerminal Action\fR +_ +\fB\e\e\fR backslash None. +\fB\ea\fR alert T{ +Attempts to alert the user through audible or visible notification. +T} +\fB\eb\fR backspace T{ +Moves the printing position to one column before the current position, unless the current position is the start of a line. +T} +\fB\ef\fR form-feed T{ +Moves the printing position to the initial printing position of the next logical page. +T} +\fB\en\fR newline T{ +Moves the printing position to the start of the next line. +T} +\fB\er\fR carriage-return T{ +Moves the printing position to the start of the current line. +T} +\fB\et\fR tab T{ +Moves the printing position to the next tab position on the current line. If there are no more tab positions left on the line, the behavior is undefined. +T} +\fB\ev\fR vertical-tab T{ +Moves the printing position to the start of the next vertical tab position. If there are no more vertical tab positions left on the page, the behavior is undefined. +T} +.TE + +.SS "Conversion Specifications" +.sp +.LP +Each conversion specification is introduced by the percent-sign character (%). +After the character %, the following appear in sequence: +.sp +.ne 2 +.na +\fB\fI\fR\fIflags\fR\fI\fR \fR +.ad +.RS 26n +Zero or more \fIflags\fR, in any order, that modify the meaning of the +conversion specification. +.RE + +.sp +.ne 2 +.na +\fB\fI\fR\fIfield width\fR\fI\fR \fR +.ad +.RS 26n +An optional string of decimal digits to specify a minimum \fIfield width\fR. +For an output field, if the converted value has fewer bytes than the field +width, it is padded on the left (or right, if the left-adjustment flag (\(mi), +described below, has been given to the field width). +.RE + +.sp +.ne 2 +.na +\fB\fI\fR\fIprecision\fR\fI\fR \fR +.ad +.RS 26n +Gives the minimum number of digits to appear for the d, o, i, u, x or X +conversions (the field is padded with leading zeros), the number of digits to +appear after the radix character for the e and f conversions, the maximum +number of significant digits for the g conversion; or the maximum number of +bytes to be written from a string in s conversion. The precision takes the form +of a period (.) followed by a decimal digit string; a null digit string is +treated as zero. +.RE + +.sp +.ne 2 +.na +\fB\fI\fR\fIconversion characters\fR\fI\fR \fR +.ad +.RS 26n +A conversion character (see below) that indicates the type of conversion to be +applied. +.RE + +.SS "\fIflags\fR" +.sp +.LP +The \fIflags\fR and their meanings are: +.sp +.ne 2 +.na +\fB\fI\(mi\fR \fR +.ad +.RS 12n +The result of the conversion is left-justified within the field. +.RE + +.sp +.ne 2 +.na +\fB\fI+\fR \fR +.ad +.RS 12n +The result of a signed conversion always begins with a sign (+ or \(mi). +.RE + +.sp +.ne 2 +.na +\fB\fI<space>\fR \fR +.ad +.RS 12n +If the first character of a signed conversion is not a sign, a space character +is prefixed to the result. This means that if the space character and + flags +both appear, the space character flag is ignored. +.RE + +.sp +.ne 2 +.na +\fB\fI#\fR \fR +.ad +.RS 12n +The value is to be converted to an alternative form. For c, d, i, u, and s +conversions, the behaviour is undefined. For o conversion, it increases the +precision to force the first digit of the result to be a zero. For x or X +conversion, a non-zero result has 0x or 0X prefixed to it, respectively. For e, +E, f, g, and G conversions, the result always contains a radix character, even +if no digits follow the radix character. For g and G conversions, trailing +zeros are not removed from the result as they usually are. +.RE + +.sp +.ne 2 +.na +\fB\fI0\fR \fR +.ad +.RS 12n +For d, i, o, u, x, X, e, E, f, g, and G conversions, leading zeros (following +any indication of sign or base) are used to pad to the field width; no space +padding is performed. If the 0 and \(mi flags both appear, the 0 flag is +ignored. For d, i, o, u, x and X conversions, if a precision is specified, the +0 flag is ignored. For other conversions, the behaviour is undefined. +.RE + +.SS "Conversion Characters" +.sp +.LP +Each conversion character results in fetching zero or more arguments. The +results are undefined if there are insufficient arguments for the format. If +the format is exhausted while arguments remain, the excess arguments are +ignored. +.sp +.LP +The \fIconversion characters\fR and their meanings are: +.sp +.ne 2 +.na +\fB\fId,i,o,u,x,X\fR \fR +.ad +.RS 16n +The integer argument is written as signed decimal (d or i), unsigned octal (o), +unsigned decimal (u), or unsigned hexadecimal notation (x and X). The d and i +specifiers convert to signed decimal in the style \fB[\fR\(mi\fB]\fR\fIdddd\fR. +The x conversion uses the numbers and letters 0123456789abcdef and the X +conversion uses the numbers and letters 0123456789ABCDEF. The \fIprecision\fR +component of the argument specifies the minimum number of digits to appear. If +the value being converted can be represented in fewer digits than the specified +minimum, it is expanded with leading zeros. The default precision is 1. The +result of converting a zero value with a precision of 0 is no characters. If +both the field width and precision are omitted, the implementation may precede, +follow or precede and follow numeric arguments of types d, i and u with blank +characters; arguments of type o (octal) may be preceded with leading zeros. +.sp +The treatment of integers and spaces is different from the \fBprintf\fR(3C) +function in that they can be surrounded with blank characters. This was done so +that, given a format such as: +.sp +.in +2 +.nf +"%d\en",<\fIfoo\fR> +.fi +.in -2 + +the implementation could use a \fBprintf()\fR call such as: +.sp +.in +2 +.nf +printf("%6d\en", \fIfoo\fR); +.fi +.in -2 + +and still conform. This notation is thus somewhat like \fBscanf()\fR in +addition to \fBprintf(\|).\fR +.RE + +.sp +.ne 2 +.na +\fB\fIf\fR \fR +.ad +.RS 16n +The floating point number argument is written in decimal notation in the style +\fB[\fR\(mi\fB]\fR\fIddd\fR.\fIddd\fR, where the number of digits after the +radix character (shown here as a decimal point) is equal to the \fIprecision\fR +specification. The \fBLC_NUMERIC\fR locale category determines the radix +character to use in this format. If the \fIprecision\fR is omitted from the +argument, six digits are written after the radix character; if the +\fIprecision\fR is explicitly 0, no radix character appears. +.RE + +.sp +.ne 2 +.na +\fB\fIe,E\fR \fR +.ad +.RS 16n +The floating point number argument is written in the style +\fB[\fR\(mi\fB]\fR\fId\fR.\fIddd\fRe\(+-\fBdd\fR (the symbol \(+- indicates +either a plus or minus sign), where there is one digit before the radix +character (shown here as a decimal point) and the number of digits after it is +equal to the precision. The \fBLC_NUMERIC\fR locale category determines the +radix character to use in this format. When the precision is missing, six +digits are written after the radix character; if the precision is 0, no radix +character appears. The E conversion character produces a number with E instead +of e introducing the exponent. The exponent always contains at least two +digits. However, if the value to be written requires an exponent greater than +two digits, additional exponent digits are written as necessary. +.RE + +.sp +.ne 2 +.na +\fB\fIg,G\fR \fR +.ad +.RS 16n +The floating point number argument is written in style f or e (or in style E in +the case of a G conversion character), with the precision specifying the number +of significant digits. The style used depends on the value converted: style g +is used only if the exponent resulting from the conversion is less than \(mi4 +or greater than or equal to the precision. Trailing zeros are removed from the +result. A radix character appears only if it is followed by a digit. +.RE + +.sp +.ne 2 +.na +\fB\fIc\fR \fR +.ad +.RS 16n +The integer argument is converted to an \fBunsigned char\fR and the resulting +byte is written. +.RE + +.sp +.ne 2 +.na +\fB\fIs\fR \fR +.ad +.RS 16n +The argument is taken to be a string and bytes from the string are written +until the end of the string or the number of bytes indicated by the +\fIprecision\fR specification of the argument is reached. If the precision is +omitted from the argument, it is taken to be infinite, so all bytes up to the +end of the string are written. +.RE + +.sp +.ne 2 +.na +\fB\fI%\fR \fR +.ad +.RS 16n +Write a % character; no argument is converted. +.RE + +.sp +.LP +In no case does a non-existent or insufficient \fIfield width\fR cause +truncation of a field; if the result of a conversion is wider than the field +width, the field is simply expanded to contain the conversion result. The term +\fIfield width\fR should not be confused with the term \fIprecision\fR used in +the description of %s. +.sp +.LP +One difference from the C function \fBprintf()\fR is that the l and h +conversion characters are not used. There is no differentiation between decimal +values for type \fBint\fR, type \fBlong\fR, or type \fBshort\fR. The +specifications %d or %i should be interpreted as an arbitrary length sequence +of digits. Also, no distinction is made between single precision and double +precision numbers (\fBfloat\fR or \fBdouble\fR in C). These are simply +referred to as floating point numbers. +.sp +.LP +Many of the output descriptions use the term \fBline\fR, such as: +.sp +.in +2 +.nf +"%s", <\fIinput line\fR> +.fi +.in -2 + +.sp +.LP +Since the definition of \fBline\fR includes the trailing newline character +already, there is no need to include a \fB\en\fR in the format; a double +newline character would otherwise result. +.SH EXAMPLES +.LP +\fBExample 1 \fRTo represent the output of a program that prints a date and +time in the form Sunday, July 3, 10:02, where \fI<weekday>\fR and \fI<month>\fR +are strings: +.sp +.in +2 +.nf +"%s,/\e%s/\e%d,/\e%d:%.2d\en",<\fIweekday\fR>,<\fImonth\fR>,<\fIday\fR>,<\fIhour\fR>,<\fImin\fR> +.fi +.in -2 + +.LP +\fBExample 2 \fRTo show pi written to 5 decimal places: +.sp +.in +2 +.nf +"pi/\e=/\e%.5f\en",<\fIvalue of pi\fR> +.fi +.in -2 + +.LP +\fBExample 3 \fRTo show an input file format consisting of five colon-separated +fields: +.sp +.in +2 +.nf +"%s:%s:%s:%s:%s\en",<\fIarg1\fR>,<\fIarg2\fR>,<\fIarg3\fR>,<\fIarg4\fR>,<\fIarg5\fR> +.fi +.in -2 + +.SH SEE ALSO +.sp +.LP +.BR awk (1), +.BR printf (1), +.BR printf (3C), +.BR scanf (3C) |