RHEL6基础三十三之服务器维护基础命令③cut

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

用法: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 ~]# who
root     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 10
p
p
p
[root@justin ~]#

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

[root@justin ~]# who|cut -b 4
t
t
t
[root@justin ~]# date |cut -b 5-7,2
0年
[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 1
nfsnobody
abrt
sshd
tcpdump
justin
[root@justin ~]# tail -5 /etc/passwd|cut -d : -f 1,6-7
nfsnobody:/var/lib/nfs:/sbin/nologin
abrt:/etc/abrt:/sbin/nologin
sshd:/var/empty/sshd:/sbin/nologin
tcpdump:/:/sbin/nologin
justin:/home/justin:/bin/bash
[root@justin ~]#

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

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

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

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


你可能感兴趣的:(cut,RHEL6,服务器维护基础命令)