cut 命令是一个选取命令,是处理一行数据的命令
cut [-c] file | cut [-df] file| cut [b] file
cut命令是从文件中的每一行进行字节,字符和字段的处理,并将处理结果输出到标准输出。如果cut命令后面跟file,则会从标准输入中读取数据。
-b:以字节为单位进行截取
-c:以字符为单位进行截取
-d:自定义分隔符,默认为制表符
-f:与-d一起使用,表示截取那部分区域
-n:取消分割多字节字符,与-b一起使用
有上面的选项参数可以看出cut可以有3中方式,对一行数据进行截取
1、以字节为单位进行处理
2、以字符为单位进行处理
3、以自定义字符为单位进行处理
下面来看看一些例子:
例子一:以字符为单位进行截取数据
先来看看who命令的输出结果
[2013012974@teach shell]$ who
2013012974 pts/0 2016-05-05 22:07 (202.117.180.119)
截取第一个字符
[2013012974@teach shell]$ who | cut -c 1
2
截取第一到第十所有的字符
[2013012974@teach shell]$ who | cut -c 1-10
2013012974
截取第一个和第十个字符
[2013012974@teach shell]$ who | cut -c 1,10
24
从上面的例子中可以看出,’-c’选项是截取第几个字符,其中值得注意的是’-‘表示的是一个区间,‘,’表示的是单个字符
例子二:以‘:’为分隔符,截取PATH环境变量第五个位置的字符
先来看看PATH变量存的内容是什么
[2013012974@teach shell]$ echo $PATH
/usr/lib64/qt-3.3/bin:/usr/local/bin:/bin:/usr/bin:/usr/local/sbin:/usr/sbin:/sbin:/home/2013012974/bin
截取的结果:
[2013012974@teach shell]$ echo $PATH | cut -d ":" -f 5
/usr/local/sbin
从上面的例子中可以看出,以’:’为分隔符,第五个位置是/usr/local/sbin
下面来试试,以空格为分隔符,来截取ll命令输出的结果
[2013012974@teach shell]$ ll
总用量 16
drwxr-xr-x. 2 2013012974 student 4096 5月 4 23:57 .
drwx------. 6 2013012974 student 4096 5月 4 23:57 ..
-rwxr-xr-x. 1 2013012974 student 334 5月 4 23:57 nologin.sh
-rwxr-xr-x. 1 2013012974 student 293 5月 4 23:56 online.sh
[2013012974@teach shell]$ ll | cut -d " " -f 5
4096
4096
可以看出两个不同命令输出的结果是相同的,并不是我们想要的结果,这是因为cut 命令在处理空格是,会严格按照选项参数中的空格的数量进行截取,这方面是cut命令的用起来不便的地方。
例子三:以字节对一行数据进行截取
[2013012974@teach shell]$ who | cut -b 12-
pts/0 2016-05-05 22:07 (202.117.180.119)
总结:cut命令处理数据是很方便的,但是唯一不好的就是对于空格的处理。