cut(1) — Commands
NAME
cut − Displays specified parts from each line of a file
SYNOPSIS
cut -b list [-n] [file ...]
cut -c list [file ...]
cut -f list [-d character] [-s] [file ...]
The cut command locates the specified fields in each line of the specified file and writes the characters in those fields to standard output.
FLAGS
-b listCuts based on a list of bytes. Each selected byte is output, unless you also specify the -n flag. For example, if you specify -b 1-72, the cut command writes out the first 72 bytes in each line of the file.
-c listCuts based on a list of characters.
-d character
Uses the specified character as the field delimiter (separator) when you specify the -f flag. You must quote characters with special meaning to the shell, such as the space character. Any character can be used as character. The default field delimiter is a tab character.
-f listSpecifies a list of fields assumed to be separated in the file by a field delimiter character, specified by the -d flag or the tab character by default. For example, if you specify -f 1,7, the cut command writes out only the first and seventh fields of each line. If a line contains no field delimiters, the cut command passes them through intact (useful for table
subheadings), unless you specify the -s flag.
-nDoes not split characters. When specified with the -b flag, each element in list of the form low-high (hyphen-separated numbers) is modified.
If the byte selected by low is not the first byte of a character, low is decremented to select the first byte of the character originally selected by low.
If the byte selected by high is not the last byte of a character, high is decremented to select the last byte of the character prior to the character originally selected by high, or zero (0) if there is no prior character.
If the resulting range element has high equal to zero (0) or low greater than high, the list element is dropped from list for that input line without causing an error.
Each element in list of the form low- is treated as previously described with high set to the number of bytes in the current line, not including the terminating newline character. Each element in list of the form -high is treated as previously described with low set to 1. Each element in list of the form number (a single number) is treated as previously described with low set to number and high set to number.
-sSuppresses lines that do not contain delimiter characters (use only with the -f flag). Unless you include this flag, lines with no delimiters are passed through.
DESCRIPTION
If you do not specify a file or you specify a hyphen (-), the cut command reads standard input.
You must specify the -b flag (to select bytes), the -c flag (to select characters) or the -f flag (to select fields). The list argument (see the -b, -c, and -f flags) must be a space-separated or comma-separated list of positive numbers and ranges. Ranges can be in three forms:
•Two positive numbers separated by a hyphen (-), as in the form low-high, which represents all fields from the first number to the second number.
•A positive number preceded by a hyphen (-), as in the form -high, which represents all fields from field number 1 to that number.
•A positive number followed by a hyphen (-), as in the form low-, which represents that number to the last field, inclusive.
The elements in list can be repeated, can overlap, and can be specified in any order.
Some sample list specifications are as follows:
1,4,7 or 1 4 7
First, fourth, and seventh bytes or fields.
1-3,8First through third and eighth bytes or fields.
-5,10First through fifth and tenth bytes or fields.
3-Third through last bytes or fields.
The fields specified by list can be a fixed number of byte positions, or the length can vary from line to line and be marked with a field delimiter character, such as a tab character.
You can also use the grep command to make horizontal cuts through a file and the paste command to put the files back together. To change the order of columns in a file, use the cut and paste commands.
EXAMPLES
To display several fields of each line of a file, enter:
cut -f 1,5 -d : /etc/passwd
This displays the login name and full username fields of the system password file. These are the first and fifth fields (-f 1,5) separated by colons (-d :).
So, if the /etc/passwd file looks like this:
su:UHuj9Pgdvz0J":0:0:User with special privileges:/:
daemon:∗:1:1::/etc:
bin:∗:2:2::/usr/bin:
sys:∗:3:3::/usr/src:
adm:∗:4:4:System Administrator:/usr/adm:
pierre:∗:200:200:Pierre Harper:/u/pierre:
joan:∗:202:200:Joan Brown:/u/joan:
Then, cut -f 1,5 -d : /etc/passwd produces this output:
su:User with special privileges
daemon:
bin:
sys:
adm:System Administrator
pierre:Pierre Harper
joan:Joan Brown
RELATED INFORMATION
Commands: grep(1), egrep(1), fgrep(1), fold(1), join(1), paste(1).