cut 列提取命令

  • 本文为慕课网shell编程之正则表达式第二章第一节关于 cut 命令的笔记,在此感谢 Tony 老师的讲解。

cut 列提取命令

cut [选项] 文件名
选项:
-f 列号:提取第几列
-d 分隔符:按照指定的分隔符分割列,默认制表符为分隔符

[root@localhost ~]# cat student.txt 
ID  Name    Gender  Mark
1   stu1    F   95
2   stu2    F   85
3   stu3    F   75
[root@localhost ~]# cut -f 2 student.txt #截取一列
Name
stu1
stu2
stu3
[root@localhost ~]# cut -f 2,4 student.txt #截取不连续多列,用“,”隔开
Name    Mark
stu1    95
stu2    85
stu3    75
[root@localhost ~]# cut -f 2-4 student.txt #截取连续多列,用“-”隔开
Name    Gender  Mark
stu1    F       95
stu2    F       85
stu3    F       75
[root@localhost ~]# df -h | cut -f 1 #df 输出结果间隔符为空格,默认间隔符为制表符,找不到间隔符认为所有内容为一列
Filesystem      Size  Used Avail Use% Mounted on
/dev/vda1        50G  1.6G   46G   4% /
devtmpfs        488M     0  488M   0% /dev
tmpfs           497M   24K  497M   1% /dev/shm
tmpfs           497M  292K  497M   1% /run
tmpfs           497M     0  497M   0% /sys/fs/cgroup
tmpfs           100M     0  100M   0% /run/user/0
[root@localhost ~]# df -h | cut -f 1,3 -d " " #间隔符为多个空格,指定一个空格截取后的内容还是空格 
Filesystem 
/dev/vda1 
devtmpfs 
tmpfs 
tmpfs 
tmpfs 
tmpfs 

cut 只能作简单截取,复杂截取需使用 awk 命令

cut 与 grep 提取系统普通用户

[root@localhost ~]# useradd user1
[root@localhost ~]# useradd user2
[root@localhost ~]# grep "/bin/bash" /etc/passwd 
root:x:0:0:root:/root:/bin/bash
user1:x:1000:1000::/home/user1:/bin/bash
user2:x:1001:1001::/home/user2:/bin/bash
[root@localhost ~]# grep "/bin/bash" /etc/passwd | grep -v "root" #“-v”选项代表取反,排除 root 用户
user1:x:1000:1000::/home/user1:/bin/bash
user2:x:1001:1001::/home/user2:/bin/bash
[root@localhost ~]# grep "/bin/bash" /etc/passwd | grep -v "root" | cut -f 1 -d ":" #截取用“:”隔开的第一列字符串
user1
user2

你可能感兴趣的:(Linux)