Next: , Up: Operating on fields within a line


8.1 cut: Print selected parts of lines

cut writes to standard output selected parts of each line of each input file, or standard input if no files are given or for a file name of ‘-’. Synopsis:

     cut option... [file]...

In the table which follows, the byte-list, character-list, and field-list are one or more numbers or ranges (two numbers separated by a dash) separated by commas. Bytes, characters, and fields are numbered starting at 1. Incomplete ranges may be given: -m means ‘1-m’; ‘n-’ means ‘n’ through end of line or last field. The list elements can be repeated, can overlap, and can be specified in any order; but the selected input is written in the same order that it is read, and is written exactly once.

The program accepts the following options. Also see Common options.

-b byte-list
--bytes=byte-list
Select for printing only the bytes in positions listed in byte-list. Tabs and backspaces are treated like any other character; they take up 1 byte. If an output delimiter is specified, (see the description of --output-delimiter), then output that string between ranges of selected bytes.
-c character-list
--characters=character-list
Select for printing only the characters in positions listed in character-list. The same as -b for now, but internationalization will change that. Tabs and backspaces are treated like any other character; they take up 1 character. If an output delimiter is specified, (see the description of --output-delimiter), then output that string between ranges of selected bytes.
-f field-list
--fields=field-list
Select for printing only the fields listed in field-list. Fields are separated by a TAB character by default. Also print any line that contains no delimiter character, unless the --only-delimited (-s) option is specified
-d input_delim_byte
--delimiter=input_delim_byte
With -f, use the first byte of input_delim_byte as the input fields separator (default is TAB).
-n
Do not split multi-byte characters (no-op for now).
-s
--only-delimited
For -f, do not print lines that do not contain the field separator character. Normally, any line without a field separator is printed verbatim.
--output-delimiter=output_delim_string
With -f, output fields are separated by output_delim_string. The default with -f is to use the input delimiter. When using -b or -c to select ranges of byte or character offsets (as opposed to ranges of fields), output output_delim_string between non-overlapping ranges of selected bytes.
--complement
This option is a GNU extension. Select for printing the complement of the bytes, characters or fields selected with the -b, -c or -f options. In other words, do not print the bytes, characters or fields specified via those options. This option is useful when you have many fields and want to print all but a few of them.

An exit status of zero indicates success, and a nonzero value indicates failure.