Linux每天学习一个命令之cut命令

420 查看

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命令处理数据是很方便的,但是唯一不好的就是对于空格的处理。