User Tools

Site Tools


bash:cut

This is an old revision of the document!


BASH - cut

The cut command allows cutting of sections based on byte positions, characters, or fields separated by a delimiter like the ‘-‘ or ‘:’ characters.

cut - remove sections from each line of files.

cut can return section based on number of bytes (-b), characters (-c), or fields (-f) when fields are separated by a delimiter(-d).

Default delimiter is tab.


Byte Cuts

The b option provided by the cut utility allows us to cut sections of a text-based on their byte positions.

Use the cut command with the flag -b followed by the byte numbers for this purpose.

Cut Only a Single Byte from the Input Stream

echo "cutting text from input" | cut -b 1

The above command echoes the string “cutting text from input” to the standard output and pipes it as an input to the cut command.

The cut command will cut just the first byte© from this string as only 1 was provided with the -b flag.


Cut Specific Bytes from the Input Stream

echo "cutting text from input" | cut -b 1,3

This command will only cut the first and third byte of the string “cutting text from input” and will display “ct” as its output.


Cut Range of Bytes from the Input Stream

echo "cutting text from input" | cut -b 1-12

The above command will cut the byte range 1-12 from the given string and print out “cutting text” on the standard output.

WARNING: Providing byte ranges that are outside of the string’s occupation will result in a message showing “cut: invalid byte or character range”.


Cut Only a Single Byte from the Text file

cut -b 1 test.txt

This command will display only the first bytes of each of the five rows inside the file test.txt.

It is equivalent to the command

cat test.txt | cut -b 1

Cut Specific Bytes from the Text File

cut -b 1,3 test.txt

The above command cuts only the first and third bytes of each row.

You can specify any byte numbers as long as they fall within the range of bytes available.


Cut Range of Bytes from the Text File

cut -b 1-12 test.txt

This command will output the first one to twelfth bytes of each row in the test.txt file.

You should notice the similarity of functionality this command possess with the 3rd command.


Cut the First 7 Bytes in Alphabetical Order

cut -b 1-7 test.txt | sort

We can provide the output of the cut command as input to the sort command for displaying the first seven bytes of each row alphabetically.

For alphabetical sorting, the sort command doesn’t require any options.


Cut the First 7 Bytes in Reverse Order

cut -b 1-7 test.txt | sort -r

This cut command will cut the first 7 bytes from each row and will output them in the reverse order.

Look how the output of the cut command is being fed to the sort command using a pipe.


Cut from the Fifth Byte to the End of the Input Stream

echo "cutting text from input" | cut -b 5-

The above cut command will cut the text from the fifth byte to the end of the string.

This command will come in handy when you need to cut from a specified byte position till the end of the input stream.

Simply change the value of the b flag while keeping the trailing – on.


Cut from the Fifth Byte to the End of the File

cut -b 5- test.txt

This command will start cutting every one of the five rows of test.txt from the fifth-byte position and finish only after each row ends.

The trailing hyphen(-) is mandatory for this operation.


Cut a Specified Amount of Bytes Starting from the First One

echo "cutting text from input" | cut -b -5

This command will cut the first five bytes of the input string.

You can cut from the starting byte to any other byte position by just replacing the value of the b flag.

Remember to add the preceding hyphen(-) else the output will not be as expected.


Cut from the First Byte to a Specified Position from The File

cut -b -5 test.txt

The above command will cut just the first five bytes of each line from our text file.

Notice how the hyphen(-) is being used for the commands 9-12 in this list.


Character Cuts

Cut a single character

cut -c 3
abcdef

returns:

c

Cut a range of characters

A range must be provided in each case which consists of one of N, N-M, N-(N to last) or -M (first to M)

cut -c 2-4
abcdef

Press CTRL+D to stop inputting

returns:

bcd

Cut a variety of characters

cut -c 2,4,7
alongtext 

returns:

lne

Cut characters up to a specific position

cut -c -2
abcdef

returns:

ab

Cut characters from a specific position

cut -c 2-
abcdef

returns:

bcdef

Cut various characters

cut -c 1,6-9,16-
alongtextwithnospaces

returns:

atextspaces

Field Cuts

Cut fields from a string, using a delimiter

cut -f 2- -d ':'
23:34:45:56

NOTE: -d specifies delimiter

returns:

34:45:56

Cut fields from a string, without specifying a delimiter

cut -f 2
er rt fg wd ji

returns:

er rt fg wd ji

NOTE: cut didn't find the delimiter (default is tab) so returns whole line.


Cut fields from a string, without specifying a delimiter; and prevent printing when delimiter not found

cut -f 2 -s
er rt fg wd ji    

NOTE: cut wont print as -s flag is used to prevent printing when delimiter not found.


Cut fields from a file, using a delimiter

cut -d: -f1 /etc/passwd >users.txt
bash/cut.1576185912.txt.gz · Last modified: 2020/07/15 09:30 (external edit)

Donate Powered by PHP Valid HTML5 Valid CSS Driven by DokuWiki