CUT(1) User Commands CUT(1)

cut - cut out selected fields of each line of a file

cut -b list [-n] [file]...

cut -c list [file]...

cut -f list [-d delim] [-s] [file]...

Use the cut utility to cut out columns from a table or fields from each line of a file; in data base parlance, it implements the projection of a relation. The fields as specified by list can be fixed length, that is, character positions as on a punched card (-c option) or the length can vary from line to line and be marked with a field delimiter character like TAB (-f option). cut can be used as a filter.

Either the -b, -c, or -f option must be specified.

Use grep(1) to make horizontal ``cuts'' (by context) through a file, or paste(1) to put files together column-wise (that is, horizontally). To reorder columns in a table, use cut and paste.

The following options are supported:

list

A comma-separated or blank-character-separated list of integer field numbers (in increasing order), with optional to indicate ranges (for instance, 1,4,7; 1−3,8; −5,10 (short for 1−5,10); or 3− (short for third through last field)).

-b list

The list following -b specifies byte positions (for instance, -b1-72 would pass the first 72 bytes of each line). When -b and -n are used together, list is adjusted so that no multi-byte character is split.

-c list

The list following -c specifies character positions (for instance, -c1-72 would pass the first 72 characters of each line).

-d delim

The character following -d is the field delimiter (-f option only). Default is tab. Space or other characters with special meaning to the shell must be quoted. delim can be a multi-byte character.

-f list

The list following -f is a list of fields assumed to be separated in the file by a delimiter character (see -d ); for instance, -f1,7 copies the first and seventh field only. Lines with no field delimiters will be passed through intact (useful for table subheadings), unless -s is specified.

-n

Do not split characters. When -b list and -n are used together, list is adjusted so that no multi-byte character is split.

-s

Suppresses lines with no delimiter characters in case of -f option. Unless specified, lines with no delimiters will be passed through untouched.

The following operands are supported:

file

A path name of an input file. If no file operands are specified, or if a file operand is , the standard input will be used.

See largefile(7) for the description of the behavior of cut when encountering files greater than or equal to 2 Gbyte (2^31 bytes).

Example 1 Mapping user IDs

A mapping of user IDs to names follows:


example% cut -d: -f1,5 /etc/passwd

Example 2 Setting current login name

To set name to current login name:


example$ name=`who am i | cut -f1 -d' '`

See environ(7) for descriptions of the following environment variables that affect the execution of cut: LANG, LC_ALL, LC_CTYPE, LC_MESSAGES, and NLSPATH.

The following exit values are returned:

0

All input files were output successfully.

>0

An error occurred.

See attributes(7) for descriptions of the following attributes:

ATTRIBUTE TYPE ATTRIBUTE VALUE
CSI Enabled
Interface Stability Standard

grep(1), paste(1), attributes(7), environ(7), largefile(7), standards(7)

cut: -n may only be used with -b

cut: -d may only be used with -f

cut: -s may only be used with -f

cut: cannot open <file>

Either file cannot be read or does not exist. If multiple files are present, processing continues.

cut: no delimiter specified

Missing delim on -d option.

cut: invalid delimiter

cut: no list specified

Missing list on -b, -c, or -f option.

cut: invalid range specifier

cut: too many ranges specified

cut: range must be increasing

cut: invalid character in range

cut: internal error processing input

cut: invalid multibyte character

cut: unable to allocate enough memory

April 29, 1999 OmniOS