CUT(1) User Commands CUT(1)

cut
cut out selected columns or fields of each line of a file

cut -b list [-nN] [-r reclen] [file]...


cut -c list [-N] [-r reclen] [file]...


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

Use the cut utility to cut out columns from a table or fields from each line of a file. In database 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 such as 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(1).

The following options are supported:
list, --bytes=list
The list following -b specifies byte positions (for instance, -b 1-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.
list, --characters=list
The list following -c specifies character positions (for instance, -c 1-72 would pass the first 72 characters of each line).
delim, --delimiter=delim
The character following -d is the field delimiter (-f option only); the default is the TAB character. Space or other characters with special meaning to the shell must be quoted. delim can be a multi-byte character.
list, --fields=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, -f 1,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.
, --split, --nosplit
Controls whether multi-byte characters are split with the -b option. The default is to split characters and this can be disabled with the -n or --nosplit flag. Unless specified, lines with no delimiters will be passed through untouched.
reclen, -R reclen, --reclen=reclen
If reclen is > 0, the input will be read as fixed length records of length reclen when used with the -b or -c options.
, --suppress, --only-delimited
Suppress lines which do not contain any delimiter characters (-f option only).
ldelim, --line-delimiter=ldelim, --output-delimiter=ldelim
The line delimiter for the -f option is set to ldelim. The default is the newline character.
, --newline, --nonewline
Controls whether to output a new-line at the end of each record when used with the -b or -c options. This is on by default; -N turns it off and is the same as specifying --nonewline.

In the above options, list is a comma-separated or blank-character-separated list of integer field, byte or character 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). )

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.

0
All input files were output successfully.
>0
An error occurred.

Example 1 Mapping user IDs

A mapping of user IDs to names follows:

    $ cut -d: -f1,5 /etc/passwd
    
Example 2 Setting current login name

To set name to current login name:

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

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

The command line interface of cut is Committed. The output of cut is Committed.

grep(1), paste(1), attributes(5), environ(5), largefile(5), standards(5)
February 9, 2021 illumos