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.


bytes

characters

fields

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 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 a 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 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 a 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 a Range of Bytes from a 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.


Cut from a specific 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.


Cut from a specific Byte to the End of a File

cut -b 5- test.txt

This command will start cutting every one of the rows of the file 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 from the beginning of a string

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

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

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


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

cut -b -5 test.txt

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


Cut Bytes in Alphabetical Order

cut -b 1-7 test.txt | sort

The output of the cut command is passed 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 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.


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.1576187807.txt.gz · Last modified: 2020/07/15 09:30 (external edit)

Donate Powered by PHP Valid HTML5 Valid CSS Driven by DokuWiki