The cut command is used to cut a specific part of a file and print it to the standard output without changing the actual file.

In other words, you can pull out a specific number of words or characters from a file using the cut command.

Fret not, I walk you through the essentials to help you know more about it:

  • The basic syntax of the command
  • Practical examples of using the cut command
  • Practice questions for the cut command

So, let’s get started.

Here’s How to use the cut command

To use the cut command, it is important to know the syntax.

So here’s the basic syntax you need to follow to use the cut command:

cut [option] <Filename or path to file>

Here,

  • [option]: it is used to change the default behavior of the cut command.
  • Filename: it is where you append the filename or the path to the file to work with the cut command.

If you are curious, here’s a list of popular options used with the cut command:

Option Description
-d Sets the field delimiter (default is tab).
-f Specifies which fields to extract (e.g., -f 2 for the second field).
-b Cuts specific bytes or byte ranges.
-c Cuts specific characters or character ranges.
-s Only prints lines containing delimiters (default prints empty lines).
--complement Cuts everything except the specified bytes, characters, or fields.

To keep the tutorial easy to follow, I will be using one text file named Haruki.txt throughout all the examples, which contains the following content:

Book_Name       Year
Hear the Wind Sing (A Wild Sheep Chase) (1973)
Pinball,        (1973)
Norwegian Wood  (1987)
A Walk to the Bakery    (1982)
Hard-Boiled Wonderland and the End of the World (1985)
The Wind-Up Bird Chronicle      (1994-1995)
Sputnik Sweetheart      (1999)
Kafka on the Shore      (2002)
After Dark      (2004)
1Q84    (2009-2010)
Colorless Tsukuru Tazaki and His Years of Pilgrimage    (2013)
Killing Commendatore    (2017)
First Person Singular   (2020)

Now, let’s take a look at some examples of using the cut command in Linux.

1. Cut by bytes

πŸ“‹

1 character = 1 byte.

The simplest way you can cut the characters using the cut command is to specify the byte of space in memory occupied by a text and cut the desired part of the file.

To cut by bytes, you can use the -b flag, and then you specify the position in-terms of terms of indexing:

cut -b <nth byte> Filename

For example, if I want to cut the fifth character, then use the following:

cut -b 5 Haruki.txt
cut first 5 characters using the byte flag in the cut command

In simple terms, use the bytes as the index number. Let’s say you would like to cut the seventh character, then you specify 7 along with the -b flag.

Cut multiple characters from each line

You can cut multiple characters from each line using the -b flag, where you specify the multiple bytes separated by commas.

For example, if I want to cut the third, sixth, and seventh character from each line, then I’ll use the following:

cut -b 3,6,7 Haruki.txt
Cut multiple characters from each line using the cut command
Cut a range of characters

With the cut command, you can also specify the range of the characters that need to be cut.

For example, if I wish to cut from the third to seventh character, then I will use the following:

cut -b 3-7 Haruki.txt
Cut range of characters
Cut everything except specific bytes

You can use the --complement flag to cut everything but not the specific bytes by which you can ignore the specified bytes and print everything else.

To use the --complement flag, you’d have to follow the given syntax:

cut -b <bytes> --complement Filename

Let’s say I want to ignore the first five bytes, then I will use the following:

cut -b 1-5 --complement Haruki.txt
Cut everything except the first 5 characters using the cut command
Specify the starting or end point to cut

Using the cut command, you can also specify the starting point from where you intend to start cutting the characters or the endpoint to stop.

To specify the starting point, you use the n- where the n is the number from where you want to start cutting off the characters until the end of the line:

cut -b n- Filename

For example, if I wish to cut from the fifth character until the end of the line, then I will use the following:

cut -b 5- Haruki.txt
specify the starting point to cut using the cut command

To specify the endpoint, you use the -n (notice the dash before n) where the n is the last character indicating the borderline to cut:

cut -b -n Filename

For example, if I want to cut until the seventh character, I will use the following:

cut -b -7 Haruki.txt
specify the end point to cut using the cut command

Suggested Read πŸ“–

31 Basic Yet Essential Ubuntu CommandsAn extensive list of essential Linux commands that every Ubuntu user will find helpful in their Linux journey.

2. Cut by characters

This is exactly like the byte option but here, it utilizes character indexing rather than byte indexing which is helpful, especially in cases where a single character uses multiple bytes.

For example, if I want to cut the first five characters, then I will use the -c flag in the following manner:

cut -c 5 Haruki.txt
cut the first 5 characters using the cut command

You can also specify the range of the characters using the -c flag. Let’s say I would like to cut from the seventh to tenth character, then I will be using the following:

cut -c 7-10 Haruki.txt
Cut characters through the range

Furthermore, you can also cut by specifying the starting and endpoint as I explained earlier. Here’s how I will cut till the 10th character using the -c flag:

cut -c -10 Haruki.txt
Cut characters by specifying the end point using the cut command

You can also specify what characters to ignore and print everything else using the --complement flag.

For example, here, I printed everything ignoring 10th to 15th character:

ignore certain characters and print everything else using the cut command

3. Cut by the fields

By default, when you want to cut by field, it will use a tab space as a delimiter. Sure you can use a different delimiter, which I will also mention.

To cut by the field, use the -f flag as shown here:

cut -f <number of fields> Filename

For example, if I wish to cut 1 field, then I will be using the following:

cut -f 1 Haruki.txt
cut by field using the cut command

To change the delimiter, you have to use the -d flag followed by the delimiter you want to use:

cut -d "delimiter" -f <number of fields> Filename

For example, here, I have used a as a character so it will print until the character a appears in the line:

cut -d "a" -f 1 Haruki.txt
use different delimiter with the cut command

4. Concatenate output using delimiter

When you use a delimiter, it concatenates output without using a delimiter, so you end up having output separated by space.

You can change this behavior using the --output-delimite flag.

πŸ“‹

The –output-delimite flag will only with when the output is divided into two or more columns.

To use the --output-delimite flag, use the following syntax:

cut <options for cutting file> --output-delimite=delimiter Filename 

For example, here, I used the -c flag to cut different parts of the file and then use the --output-delimite flag to concatenate output with the @:

cut -c 1-5,9,11-14 --output-delimiter=@ Haruki.txt

Did you see that? First I used the -c flag to print the 1 to 5, then 9th, and then 11 to 14th characters, and then merged the whole output with the @.

Practice questions πŸ—’οΈ

In this section, I share some practice questions that you can use to get better at using the cut command:

  1. Save the output of the cut command by redirecting it to a file.
  2. How do you print the first 5 characters of the file using the cut command?
  3. Print everything ignoring the following range of characters: 2-6, 10, 12-15.
  4. Use e as a delimiter and divide the file into 2 parts.

Wrapping Up

This tutorial went through the basics of using the cut command, including the syntax, practical examples, and practice questions. You can explore more examples in our blog post at Linux Handbook:

4 Essential and Practical Usage of Cut Command in LinuxThe cut command in Linux allows removing data on each line of a file. Read this tutorial to know how to use it effectively to process text or CSV data file.

If you are starting out, you might want to refer to our Linux command guide for beginners:

Linux Command Tutorials for Absolute BeginnersNever used Linux commands before? No worries. This tutorial series is for absolute beginners to the Linux terminal.

Similar Posts