命令格式:

cut -d 'delimiter' -f fields -b [range like 1,2] -c [range like 2,3]   file


直接举例比较容易明白

1 找出某个用户的uid和gid
[liuliancao@liuliancao exp]$ sudo grep liuliancao /etc/passwd|cut -d: -f 3,4 
[sudo] password for liuliancao: 
1000:1000
结论:-d 指delimiter,分隔符的意思,在cut中默认是tab

2 取出1-5个characters的内容
[liuliancao@liuliancao exp]$ cat t1.txt | cut -c 1-5
hello
both 
if th
i wil
结论:-c 可以指定捕获的内容大小,指定character数目

3 取出指定字节的内容
[liuliancao@liuliancao exp]$ cat t1.txt 
我很好,你好吗
现在是10点
now it is 10 a.m.
[liuliancao@liuliancao exp]$ cat t1.txt | cut -b 1-3
我
现
now
[liuliancao@liuliancao exp]$ echo $LANG
en_US.UTF-8
[liuliancao@liuliancao exp]$ cat t1.txt | cut -c 1-3
我很好
现在是
now
结论:-b 指定bytes,汉字在我的系统UTF8中是三个字节,也是一个字符
百度了一下:UNICODE是对ASCII和ISO-LATIN1的扩展,增加了一个高位,所以可以支持很多语种,这时汉字是两个字节,utf8对UNICODE进行了重新编码,使得编码后ASCLL码与以前一样,但增加了一定不确定性


4 对于分隔符不足的情况
[liuliancao@liuliancao exp]$ cat t4.txt 
wo我很好! ni好
你号码  this 
What is your favorite
nnnn
[liuliancao@liuliancao exp]$ cat t4.txt | cut -f2,3 -d' '
ni好
 this
is your
nnnn
[liuliancao@liuliancao exp]$ cat t4.txt | cut -f2,3 -d' ' -s
ni好
 this
is your
结论:默认情况下,如果分隔符号指定,切掉的是尽可能最大的匹配,如果切1-5,那么在以-d指定的分隔符号的1-5个fields都会显示,如果只有三个也会显示,而没有分隔符号默认也会显示
而-s则使得没有分隔符号的情况下不显示
 -s, --only-delimited
              do not print lines not containing delimiters