来自:https://www.cnblogs.com/xqzt/p/5858309.html
1. 命令简介
cut根据指定的定界符,切分文件,并将选中的列输出到标准输出。
2. 用法
cut [选项]... [文件]...
打印输入行的选中的parts 到标准输出
cut命令的分界符:-d ---如果分界符是空格,需要 -d ' '
cut命令主要是接受三个定位方法:
第一,字节(bytes),用选项-b (单个字母) 第二,字符(characters),用选项-c (单个汉字) 第三,域(fields),用选项-f (单个单词)
3. 选项
4. 示例
以密码/etc/passwd为例
[root@xqzt ~]# tail -n 5 /etc/passwd
nfsnobody:x:65534:65534:Anonymous NFS User:/var/lib/nfs:/sbin/nologin
gnome-initial-setup:x:992:990::/run/gnome-initial-setup/:/sbin/nologin
tcpdump:x:72:72::/:/sbin/nologin
vboxadd:x:991:1::/var/run/vboxadd:/bin/false
wangshengzhuang:x:1000:1000:wangshengzhuang:/home/wangshengzhuang:/bin/bash
示例1:-f 指定字段
打印用户名
[root@xqzt ~]# tail -n 5 /etc/passwd |cut -d ":" -f 1
nfsnobody
gnome-initial-setup
tcpdump
vboxadd
wangshengzhuang
示例2:-f 指定多个字段
打印用户名、home目录、shell
[root@xqzt ~]# tail -n 5 /etc/passwd |cut -d ":" -f 1,6,7
nfsnobody:/var/lib/nfs:/sbin/nologin
gnome-initial-setup:/run/gnome-initial-setup/:/sbin/nologin
tcpdump:/:/sbin/nologin
vboxadd:/var/run/vboxadd:/bin/false
wangshengzhuang:/home/wangshengzhuang:/bin/bash
示例3: -f n-m打印第n-m个字段
打印用户ID和组ID
[root@xqzt ~]# tail -n 5 /etc/passwd |cut -d ":" -f 3-4
65534:65534
992:990
72:72
991:1
1000:1000
[root@xqzt ~]# tail -n 5 /etc/passwd |cut -d ":" -f 3,4
65534:65534
992:990
72:72
991:1
1000:1000
示例4: --output-delimiter指定输出使用新的分界符
[root@xqzt ~]# tail -n 5 /etc/passwd |cut -d ":" -f 3,4 --output-delimiter=" | "
65534 | 65534
992 | 990
72 | 72
991 | 1
1000 | 1000
示例5:--complement 补全选中的部分(反选)
打印除了密码、用户id 和组id 之外的所有列
[root@xqzt ~]# tail -n 5 /etc/passwd |cut -d ":" -f 2-4 --complement
nfsnobody:Anonymous NFS User:/var/lib/nfs:/sbin/nologin
gnome-initial-setup::/run/gnome-initial-setup/:/sbin/nologin
tcpdump::/:/sbin/nologin
vboxadd::/var/run/vboxadd:/bin/false
wangshengzhuang:wangshengzhuang:/home/wangshengzhuang:/bin/bash
拓展项:-b -c
示例1:-b 指定字符
[root@xqzt ~]# tail -n 5 /etc/passwd |cut -b 2-4
sno
nom
cpd
box
ang
示例2:-c 指定汉字
[rocrocket@rocrocket programming]$ cat cut_ch.txt 星期一 星期二 星期三 星期四 [rocrocket@rocrocket programming]$ cut -b 3 cut_ch.txt � � � � [rocrocket@rocrocket programming]$ cut -c 3 cut_ch.txt 一 二 三 四 看到了吧,用-c则会以字符为单位,输出正常;而-b只会傻傻的以字节(8位二进制位)来计算,输出就是乱码。 既然提到了这个知识点,就再补充一句,如果你学有余力,就提高一下。 当遇到多字节字符时,可以使用-n选项,-n用于告诉cut不要将多字节字符拆开。例子如下: [rocrocket@rocrocket programming]$ cat cut_ch.txt |cut -b 2 � � � � [rocrocket@rocrocket programming]$ cat cut_ch.txt |cut -nb 2 [rocrocket@rocrocket programming]$ cat cut_ch.txt |cut -nb 1,2,3 星 星 星 星
Comments | NOTHING