# Cut (Unix)

In computing, cut is a command line utility on Unix and Unix-like operating systems which is used to extract sections from each line of input — usually from a file. It is currently part of the GNU coreutils package and the BSD Base System.
Extraction of line segments can typically be done by bytes (-b), characters (-c), or fields (-f) separated by a delimiter (-d — the tab character by default). A range must be provided in each case which consists of one of N, N-M, N- (N to the end of the line), or -M (beginning of the line to M), where N and M are counted from 1 (there is no zeroth value). Since version 6, an error is thrown if you include a zeroth value. Prior to this the value was ignored and assumed to be 1.

## History

The original Bell Labs version was written by Gottfried W. R. Luderer. cut is part of the X/Open Portability Guide since issue 2 of 1987. It was inherited into the first version of POSIX.1 and the Single Unix Specification. It first appeared in AT&T System III UNIX in 1982.
The version of cut bundled in GNU coreutils was written by David M. Ihnat, David MacKenzie, and Jim Meyering. The command is available as a separate package for Microsoft Windows as part of the UnxUtils collection of native Win32 ports of common GNU Unix-like utilities. The cut command has also been ported to the IBM i operating system.

## Examples

Assuming a file named "file" containing the lines:
To output the fourth through tenth characters of each line:
To output the fifth field through the end of the line of each line using the colon character as the field delimiter:
(note that because the colon character is not found in the last line the entire line is shown)
Option -d specifies a single character delimiter (in the example above it is a colon) which serves as field separator. Option -f which specifies range of fields included in the output (here fields range from five till the end). Option -d presupposes usage of option -f.
To output the third field of each line using space as the field delimiter:
(Note that because the space character is not found in the first three lines these entire lines are shown.)
To separate two words having any delimiter:

## Syntax

Flags which may be used include:

### -b

    Bytes; a list following -b specifies a range of bytes which will be returned, e.g. cut -b1-66 would return the first 66 bytes of a line. NB If used in conjunction with -n, no multi-byte characters will be split. NNB. -b will only work on input lines of less than 1023 bytes

### -c

    Characters; a list following -c specifies a range of characters which will be returned, e.g. cut -c1-66 would return the first 66 characters of a line

### -f

    Specifies a field list, separated by a delimiter

### list

    A comma separated or blank separated list of integer denoted fields, incrementally ordered. The - indicator may be supplied as shorthand to allow inclusion of ranges of fields e.g. 4-6 for ranges 4–6 or 5- as shorthand for field 5 to the end, etc.

### -n

    Used in combination with -b suppresses splits of multi-byte characters

### -d

    Delimiter; the character immediately following the -d option is the field delimiter for use in conjunction with the -f option; the default delimiter is tab. Space and other characters with special meanings within the context of the shell in use must be enquoted or escaped as necessary.

### -s

    Bypasses lines which contain no field delimiters when -f is specified, unless otherwise indicated.

### file

    The file (and accompanying path if necessary) to process as input. If no file is specified then standard input will be used.