Feb 172011
 

tux-terminalAmong the commands available from the linux terminal there’s also cut, very useful for processing strings and characters in general.

The cut command is one of the oldest Unix command. That means that it is more then 40 years old. And it shows. It is important to understand that this is a Unix command and behaves in “Unix way”.  For example, it  uses IFS (Input Field Separators) to determine where to split fields.  You can check it with set | grep IFS. You can also set it, for example, to:

IFS=" tn"

The cut command takes a vertical slice of a file, printing only the specified columns or fields. The columns are selected using the standard IFS or one specified.

Basic usage

cut OPTION [FILE]

Some of the most common options are:

-c, --characters=LIST
                       select only these characters
-d, --delimiter=DELIM
                       use DELIM instead of TAB for field delimiter
-f, --fields=LIST
                       select  only  these fields;  also print any line that contains no delimiter character, unless the -s option is specified
-s, --only-delimited
                       do not print lines not containing delimiters

Let’s do some practical example, having the test.txt file containing:

12345:Administration:james:smith
67891:Staff:stephan:york
18230:Staff:luke:cutwine
62913:Sales:red:blues

Print only character from 1 to 5 of each line.

>cut -c1-5 test.txt
12345
67891
18230
62913

This can be useful when we have fixed width fields, but if we want to print the third column (using as a separator the character :), we can use:

>cut -d: -f3 test.txt
james
stephan
luke
red

It’s often the case that you want to use a space as the delimiter. To do so, you must put the delimiter in single quotes, like this: -d' '

Finally as a last example we print the contents of the file without the column number two, for this we use the –complement that excludes the column indicated:

cut -d: -f2 --complement test.txt
12345:james:smith
67891:stephan:york
18230:luke:cutwine
62913:red:blues

To print (or exclude) more columns just list them separated by a comma in the -f options.

cut -d: -f2,4  test.txt
Administration:smith
Staff:york
Staff:cutwine
Sales:blues

Popular Posts:

Flattr this!

 Leave a Reply

You may use these HTML tags and attributes: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong>

(required)

(required)

*