功能:
cut是以每一行为一个处理对象的 ,cut命令用来显示行中的指定部分,删除文件中指
定字段。cut经常用来显示文件的内容
格式:
cut(选项)(参数)
选项:
-b 字节(bytes)
[root@localhost ~]# who //原样输出展示 root pts/1 2020-01-06 18:52 (221.221.159.88) [root@localhost ~]# who|cut -b 3 //第三个字节 o [root@localhost ~]# who|cut -b 5 //输出的应该是空格
[root@localhost ~]# who|cut -b 1-3,10 //取1~3和第十个字节 !注意 1-3和10不可以互换位置 一定要按字节的顺序来
roop
[root@localhost ~]# who|cut -b -3 //前三个字节
roo
[root@localhost ~]# who|cut -b 3- //三个字节以后的所有
ot pts/1 2020-01-06 18:52 (221.221.159.88)
-c 字符(characters)
//-c 和-d的区别体现在-c以字符为单位输出
如果是中文的话
-c会输出一整个中文
-b只会以字节(8位二进制位)来计算 输出的中文就是乱码
解决-b乱码:可以用 -bn -n用于告诉cut不要将多字节字符拆开
-f 域(fields) -d 设置分隔符
//具体的说就是设置“间隔符” 再设置“提取第几个域” [root@localhost ~]# cat /etc/passwd|head -5 root:x:0:0:root:/root:/bin/bash bin:x:1:1:bin:/bin:/sbin/nologin daemon:x:2:2:daemon:/sbin:/sbin/nologin adm:x:3:4:adm:/var/adm:/sbin/nologin lp:x:4:7:lp:/var/spool/lpd:/sbin/nologin [root@localhost ~]# cat /etc/passwd|head -5|cut -d : -f 1 root bin daemon adm lp [root@localhost ~]# cat /etc/passwd|head -5|cut -d : -f 2 x x x x x
附加:关于cut的一个小bug
[root@localhost ~]# ps PID TTY TIME CMD 4323 pts/1 00:00:00 bash 4716 pts/1 00:00:00 ps [root@localhost ~]# ps|cut -b3 P 3 7 7 原因:ps|cut会自身创建一个进程,所以当ps时也会提取出这个进程,然后通过管道输出到cut,所以cut截取后,就多出了一行,之所以会重复上一行内容,是由于我们恰巧取到了和上一行内容相同的字符而已。 [root@localhost ~]# ps|cut -b 5 D 3 5 6 试了一下 还是有不一样的 哈哈哈哈