cut command in UNIX is a command line utility for cutting sections from each line of files and writing the result to standard output. It can be used to cut parts of a line by byte position, character and delimiter. It can also be used to cut data from file formats like CSV.
To cut out a section of a line by specifying a byte position use the
echo 'baz' | cut -b 2 a echo 'baz' | cut -b 1-2 ba echo 'baz' | cut -b 1,3 bz
To cut by character use the
-c option. This selects the characters given to the
-c option. This can be a list of comma separated numbers, a range of numbers or a single number.
Where your input stream is character based
-c can be a better option than selecting by bytes as often characters are more than one byte.
In the following example character ‘♣’ is three bytes. By using the
-c option the character can be correctly selected along with any other characters that are of interest.
echo '♣foobar' | cut -c 1,6 ♣a echo '♣foobar' | cut -c 1-3 ♣fo
To cut using a delimiter use the
-d option. This is normally used in conjunction with the
-f option to specify the field that should be cut.
In the following example a CSV file exists and is saved as
John,Smith,34,London Arthur,Evans,21,Newport George,Jones,32,Truro
The delimiter can be set to a comma with
cut can then pull out the fields of interest with the
-f flag. In the following example the first field is cut.
cut -d ',' -f 1 names.csv John Arthur George
Multiple fields can be cut by passing a comma separated list.
cut -d ',' -f 1,4 names.csv John,London Arthur,Newport George,Truro
To cut by complement us the
--complement option. Note this option is not available on the BSD version of
--complement option selects the inverse of the options passed to sort.
In the following example the
-c option is used to select the first character. Because the
--complement option is also passed to
cut the second and third characters are cut.
echo 'foo' | cut --complement -c 1 oo
To modify the output delimiter use the
--output-delimiter option. Note that this option is not available on the BSD version of
cut. In the following example a semi-colon is converted to a space and the first, third and fourth fields are selected.
echo 'how;now;brown;cow' | cut -d ';' -f 1,3,4 --output-delimiter=' ' how brown cow
Have an update or suggestion for this article? You can edit it here and send me a pull request.
Using HashiCorp Vault with LDAP
How to use HashiCorp Vault to setup an LDAP backed secret store with read-only access for users in groups and read-write access for specific users
Linux and Unix xargs command tutorial with examples
Tutorial on using xargs, a UNIX and Linux command for building and executing command lines from standard input. Examples of cutting by character, byte position, cutting based on delimiter and how to modify the output delimiter.
Copy a file in Go
How to copy a file in Go. The ioutil package does not offer a shorthand way of copying a file. Instead the os package should be used.