Shell学习总结---cut

功能:

进行列提取(但也需要按行进行数据提取,即先读取文本的一行数据,在行中判断是否有符合条件的字段,然后再处理下一行)

区分:

grep命令是在文件中提取符合条件的行

命令格式:

[root@localhost ~]# cut [选项] 文件名
选项说明:
-f列号:需要提取的列号,如提取第2列,即-f 2
-d分隔符:按照指定分隔符来分隔列,如使用“|”,即-d "|"
    默认分隔符为制表符,即Tab键
-c字符范围:不依赖分隔符来区分列,而通过字符范围(行首为0)来进行字段提取。
     n-:从第n个字符到行尾,
     n-m:从第n个字符到第m个字符
     -m:从第1个字符到第m个字符

应用实例:

建立学生表:分隔符为制表符

[root@localhost ~]# vi student.txt
ID Name gender Mark
1 Liming M 86
2 Sc M 90
3 Gao M 83

使用cut命令:提取第二列的内容

[root@localhost ~]# cut -f 2 student.txt
Name
Liming
Sc
Gao

提取多列内容:将列号直接用","隔开

[root@localhost ~]# cut -f 2,3 student.txt
#提取第二列和第三列的内容
Name gender
Liming M
Sc M
Gao M

cut命令按照字符进行提取:

[root@localhost ~]#cut -c 8- student.txt
#提取取每行从第8个字符到行尾,好像很乱啊,那是因为每行的字符个数不相等
gender Mark
g M 86
90
83
#说明:
"8-":提取所有行从第 8 个字符到行尾;
"10-20":提取所有行的第 10~20 个字符;
"-8":提取所有行从行首到第 8 个字符

cut指定分隔符:如以":"为分隔符

[root@localhost ~]# cut -d ":" -f 1,3 /etc/passwd
#以":"作为分隔符,提取/etc/passwd文件的第一列和第三列
root:0
bin:1
daemon:2
adm:3
lp:4

cut命令存在的问题:

对空格识别能力不好,遇到以空格分隔数据的文件时会出问题。如果需要将空格符作为分隔符,建议使用awk命令。

举例:使用df命令列出分区使用情况,使用cut命令截取第一列和第三列,会出现第三列内容不显示
[root@localhost ~]# df
#统计分区使用状况
文件系统 1K-块 已用 可用 已用% 挂载点
/dev/sda3 19923216 1848936 17062212 10% /
tmpfs 312672 0 312672 0% /dev/shm
/dev/sda1 198337 26359 161738 15% /boot
/dev/srO 3626176 3626176 0 100% /mnt/cdrom

从输出结果可以发现第三列信息并没有成功输出,因为df命令输出的信息的分隔符是多个空格,cut命令会将每个空格当做一个分隔符,所以第三列恰好是空格。

[root@localhost ~]# df -h|cut -d " "-f 1,3
#df -h列出分区情况,并指定分隔符“ ”,提取第1列和第三列
文件系统
/dev/sda3
tmpfs
/dev/sda1
/dev/sr0
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值