功能:以每一行为一条记录进行剪切数据

用法:cut [-d 分隔符] -options num1,num2-num3 filename

说明:num1,num2-num3表示显示每行从开头算起 num1 和num2到 num3 的字符/字节/域,多个定位之间用逗号隔开,-N表示从第一个字符/字节/域到第N个字符/字节/域,而N-表示从第N个字符/字节/域到行尾,,N-M表示从第N个字符/字节/域到第M个字节。options和num中间空格可有可无

options:

      -c 字符(characters):字母、数字、汉和符号都是一个字符

[root@justin ~]# whoroot     pts/02013-12-02 10:23 (10.15.72.73)root     pts/12013-12-02 17:07 (10.15.72.73)root     pts/22013-12-02 17:07 (10.15.72.73)[root@justin ~]# who|cut -c 10ppp[root@justin ~]#

-b:字节(bytes):执行此命令时,cut会先把-b后面所有的定位进行从小到大排序,然后再提取。一个空格算一个字节,一个汉字算三个字节,

[root@justin ~]# who|cut -b 4ttt[root@justin ~]# date |cut -b 5-7,20年[root@justin ~]#

执行cut -b 5-7,2时先排序再提取(0年),而不是直接提取(年0)

       -n:取消分割多字节字符,仅和-b一起使用

[root@justin ~]# date|awk '{print $4}' > /home/passwd[root@justin ~]# cat !$cat /home/passwd星期二[root@justin ~]# cut -b 2 /home/passwd                                                                                                                                                       [root@justin ~]# cut -nb 2 /home/passwd[root@justin ~]# cut -b 1,2,3 /home/passwd星[root@justin ~]# cut -nb 1,2,3 /home/passwd星

这个参数还没弄清除具体作用

       -d:定义分隔符,默认制表符TAB,如果分隔符是空格使用【-d ' '】,两个单引号之间有一个空格,-d后面设置一个空格,不许设置多个空格,因为cut只允许间隔符是一个字符

             -f:域(fields),与-d一起使用,指定显示哪个区域

[root@justin ~]# tail -5 /etc/passwd|cut -d : -f 1nfsnobodyabrtsshdtcpdumpjustin[root@justin ~]# tail -5 /etc/passwd|cut -d : -f 1,6-7nfsnobody:/var/lib/nfs:/sbin/nologinabrt:/etc/abrt:/sbin/nologinsshd:/var/empty/sshd:/sbin/nologintcpdump:/:/sbin/nologinjustin:/home/justin:/bin/bash[root@justin ~]#

            -s表示不包括那些不含分隔符的行(这样有利于去掉注释和标题)

说明:cut只擅长处理“以一个字符间隔”的文本内容,如果文件里面的某些域是由若干个空格来间隔的,那么用cut就有点麻烦了。cut默认的分隔符是tab,如何分别tab还是hi多个空格?需要用到下篇降到的sed

[root@justin ~]# cat /home/passwd1 2  3  4   5 6[root@justin ~]# sed -n l /home/passwd1 2  3\t4\t5 6$[root@justin ~]#

如果是制表符(TAB),那么会显示为\t符号,如果是空格,就会原样显示,通过此方法即可以判断制表符和空格,上面sed -n后面的字符是L的小写字母,不是管道(|)


split

split命令可以将一个大文件分割成很多个小文件,支持文本文件分割,又支持二进制文件分割。

选项

-b:值为每一输出档案的大小,单位为 byte。支持单位:m,k;

-C:每一输出档中,单行的最大 byte 数。与 -b 类似,但会尽量维持每行的完整性 

-d:使用数字作为后缀。参与-a一起使用

-a, --suffix-length=N   使用长度为 N 的后缀 (默认 2)

-l:值为每一输出档的列数大小,根据文件的行数来分割文件

生成一个大小为100KB的测试文件

[root@zhaolei12 logs]# dd if=/dev/zero bs=100k count=1 of=date.file

分割成大小为10KB的小文件

[root@zhaolei12 logs]# split -b 10k date.file 

文件被分割成多个带有字母的后缀文件,如果想用数字后缀可使用-d参数,同时可以使用-a length来指定后缀的长度:

[root@zhaolei12 logs]# split -b 10k date.file -d -a 3

为分割后的文件指定文件名的前缀:

[root@zhaolei12 logs]# split -b 10k date.file -d -a 3 split_file

[root@zhaolei12 logs]# split -C 123m  bigada.log.2018-06-05 -d bigada.log.2018-06-05.