cut 字段列提取命令
命令语法:cut [选项] 文件名
命令选项:-f 列号,提取第几列;-d 分隔符,按照指定的分隔符分割列。
示例:
[root@192 cut]# cat score.txt
Id Name Gender Score
1 zhangsan M 90
2 lisi M 88
3 wangwu M 98
4 zhaoliu N 97
5 NangongYi M 100
实例:我要提取所有的成绩 - cut -f 4 score.txt
[root@192 cut]# cut -f 4 score.txt
Score
90
88
98
97
100
[root@192 cut]#
实例:如果要提取姓名和分数 - cut -f 2,4 score.txt
[root@192 cut]# cut -f 2,4 score.txt
Name Score
zhangsan 90
lisi 88
wangwu 98
zhaoliu 97
NangongYi 100
[root@192 cut]#
实例:从passwd文件,以“:”为分隔符,提取1,3列 - cut -d “:” -f 1,3 /etc/passwd
[root@192 cut]# cut -d ":" -f 1,3 /etc/passwd
root:0
bin:1
daemon:2
adm:3
lp:4
sync:5
shutdown:6
halt:7
mail:8
uucp:10
operator:11
games:12
gopher:13
ftp:14
nobody:99
dbus:81
vcsa:69
rpc:32
abrt:173
haldaemon:68
ntp:38
saslauth:499
postfix:89
avahi:70
rpcuser:29
nfsnobody:65534
sshd:74
tcpdump:72
oprofile:16
user1:500
[root@192 cut]#
那么,cut的作用,就这些了吗?不是,cut在现实的操作中,与grep命令结合,会发挥出最大的作用。
知识点:
系统用户登录的文件是“/sbin/nologiin”;普通用户登录的文件是“/bin/bash”
实例:我想知道Linux系统中所有的新增普通用户的用户名 - cat /etc/passwd | grep /bin/bash | cut -d ":" -f 1
[root@192 cut]# cat /etc/passwd | grep /bin/bash | cut -d ":" -f 1
root
user1
user2
user3
[root@192 cut]#
cut 命令的局限
示例:
[root@192 cut]# df -h
文件系统 容量 已用 可用 已用%% 挂载点
/dev/sda3 17G 2.6G 14G 17% /
tmpfs 499M 0 499M 0% /dev/shm
/dev/sda1 985M 40M 896M 5% /boot
实例:我想提取/dev/sda3的使用量
[root@192 cut]# df -h | cut -f 5
/dev/sda3 17G 2.6G 14G 17% /
tmpfs 499M 0 499M 0% /dev/shm
/dev/sda1 985M 40M 896M 5% /boot
结果,并没有显示我们想要的列!这是为什么?Cut命令的局限性就显示出来了!
cut 命令的局限在于,它无法提取分隔符不是“制表符”(tab)的字符。
|