『忘了再学』Shell基础 — 26、cut列提取命令
1、cut命令说明
cut
命令的作用是对文本中的内容进行截取。
一个文件里边有很多数据,grep
命令是用来提取文本内容包含匹配规则的行,而cut
命令是用来截取文本内容中的列数据。
[root@localhost ~]# cut [选项] 文件名
选项:
-f 列号:提取第几列。
-d 分隔符:按照指定分隔符分割列,默认分隔符是制表符(tab键)。
-c 字符范围:不依赖分隔符来区分列,而是通过字符范围(行首为0)来进行字段提取。
“n-”表示截取所有行从第n个字符到行尾;
“n-m”表示截取所有行从第n个字符到第m个字符;
“-m”表示截取所有行从第1个字符到第m个字符。
2、cut命令练习
使用如下文本:
ID Name Gender Mark
1 Tangs M 88
2 Sunwk M 99
3 Zhubj M 77
4 Shahs M 66
(1)cut命令基本用法
使用cut
命令提取student.txt
文本中的第二列信息。
# 提取文本中第二列内容
[root@localhost tmp]# cut -f 2 student.txt
Name
Tangs
Sunwk
Zhubj
Shahs
如果只需要第二列信息,且不需要标题,就需要结合前边说的grep
命令一起使用了。
[root@localhost tmp]# grep -v "Name" student.txt | cut -f 2
Tangs
Sunwk
Zhubj
Shahs
(2)cut命令选取多列
如果想要提取文本中多列数据,只要将列号直接用,
(逗号)分开即可,命令如下:
[root@localhost tmp]# cut -f 2,4 student.txt
Name Mark
Tangs 88
Sunwk 99
Zhubj 77
Shahs 66
(3)按字符来进行提取
cut
命令可以按照字符进行提取,需要注意8-
代表的是提取所有行的第十个字符开始到行尾,而
10-20
代表提取所有行的第10个字符到第20个字符,而-8
代表提取所有行从行首到第8个字符。
[root@localhost tmp]# cut -c -6 student.txt
ID Nam
1 Tang
2 Sunw
3 Zh
4 Shah
注意:在实际工作中,这种方式很难提取出合理的数据信息,除非格式非常的规律,因为每行的字符个数不相等,截取出来的内容会不完整。
(4)按指定分隔符进行截取数据
例如:以:
作为分隔符,提取/etc/passwd
文件中,普通用户的第一列和第三列数据信息。
需要先过滤掉伪用户和root
用户,在切割提取。
# 过滤伪用户
# grep "/bin/bash" /etc/passwd
# 过滤root用户
# grep -v "root" /etc/passwd
# 执行命令
[root@localhost tmp]# grep "/bin/bash" /etc/passwd | grep -v "root" | cut -d ":" -f 1,3
user1:500
user2:501
之后我们就可以把这些提取出来的数据,传入变量中,然后该变量就可以在程序中进行操作了。
3、cut命令分隔符说明
cut
命令默认分隔符是制表符(tab
键),而不是使用空格来进行分隔,因为cut
命令不识别空格作为分隔符。
如果有特定的符号,也是可以用-d
选项进行指定做为分隔符。
而空格不推荐作为cut
命令的分隔符。
如查看磁盘情况的df
命令:
[root@192 localhost]# df -h
Filesystem Size Used Avail Use% Mounted on
/dev/sda3 19G 2.1G 16G 12% /
tmpfs 491M 0 491M 0% /dev/shm
/dev/sda1 240M 34M 194M 15% /boot
这个命令中间的分隔就是空格。
如我们通过cut
命令获取二列信息,如下:
[root@192 localhost]# df -h | cut -f 2
Filesystem Size Used Avail Use% Mounted on
/dev/sda3 19G 2.1G 16G 12% /
tmpfs 491M 0 491M 0% /dev/shm
/dev/sda1 240M 34M 194M 15% /boot
我们看到cut
命令默认是不识别空格作为分隔符的。
如果我们用-d
选项指定空格作为分隔符,如下:
可以看到获取的是一列空格,也非常的不好用。
所以不推荐空格作为cut
命令的分隔符。
总结一下:
cut
命令的默认分隔符是制表符,也就是tab
键,对空格作为分隔符是支持的,但是不怎么好用,不推荐使用。- 如果需要用空格来截取文本数据,可以用后边讲的
awk
来进行截取。
『忘了再学』Shell基础 — 26、cut列提取命令的更多相关文章
- 『忘了再学』Shell基础 — 19、使用declare命令声明变量类型
目录 1.declare命令介绍 2.声明数组变量类型 3.声明变量为环境变量 4.声明只读属性 5.补充: 1.declare命令介绍 Shell中所有变量的默认类型是字符串类型,如果你需要进行特殊 ...
- 『忘了再学』Shell基础 — 28、AWK中条件表达式说明
目录 1.AWK的条件表达 2.条件表达式说明 (1)BEGIN (2)END (3)关系运算符 (4)说明AWK中条件表达式的执行过程 (5)AWK中使用正则表达式 (6)A~B练习 1.AWK的条 ...
- 『忘了再学』Shell基础 — 10、Bash中的特殊符号(二)
提示:本篇文章接上一篇文章,主要说说()小括号和{}大括号的区别与使用. 8.()小括号 ():用于一串命令执行时,()中的命令会在子Shell中运行.(和下面大括号一起说明) 9.{}大括号 {}: ...
- 『忘了再学』Shell基础 — 2、Shell的作用与分类
目录 1.Shell的作用 2.Shell的分类 1.Shell的作用 Shell除了能解释用户输入的命令,将它传递给内核,还可以: 调用其他程序,给其他程序传递数据或参数,并获取程序的处理结果. 在 ...
- 『忘了再学』Shell基础 — 5、Bash基本功能(命令的别名和常用快捷键)
目录 1.给命令设置别名 (1)设置别名的命令格式 (2)命令别名永久生效 (3)别名的优先级 2.Bash常用快捷键 1.给命令设置别名 Linux系统的命令别名我们之前已经说过了,这里再过一边. ...
- 『忘了再学』Shell基础 — 8、管道符介绍
我们之前已经有文章说过管道符了,今天这里再简单总结一下用法. 1.行提取命令grep grep命令的作用,是在指定的文件中,搜索符合条件的字符串. 命令格式: [root@localhost ~ ] ...
- 『忘了再学』Shell基础 — 27、AWK编程的介绍和基本使用
目录 1.AWK介绍 (1)AWK概述 (2)printf格式化输出 (3)printf命令说明 2.AWK的基本使用 (1)AWK命令说明 (2)AWK命令使用 1.AWK介绍 (1)AWK概述 A ...
- 『忘了再学』Shell基础 — 3、echo命令的介绍与使用
目录 1.echo命令的作用 2.echo命令的基本用法 3.echo命令的-e选项用法 4.echo命令一些特殊用法 (1)输出字符带有字体颜色 (2)输出字符带有背景颜色 在讲Shell脚本之前, ...
- 『忘了再学』Shell基础 — 24、Shell正则表达式的使用
目录 1.正则表达式说明 2.基础正则表达式 3.练习 (1)准备工作 (2)*练习 (3).练习 (4)^和$练习 (5)[]练习 (6)[^]练习 (7)\{n\}练习 (8)\{n,\}练习 ( ...
随机推荐
- 手把手带你撸一把springsecurity框架源码中的认证流程
提springsecurity之前,不得不说一下另外一个轻量级的安全框架Shiro,在springboot未出世之前,Shiro可谓是颇有统一J2EE的安全领域的趋势. 有关shiro的技术点 1.s ...
- 在边缘计算场景中使用Dapr
Dapr 是分布式应用程序可移植.事件驱动的运行时, 这里有几个关键字,我们拆开来看一下: 分布式: 代表共享或是分散,在云原生应用上体现为微服务,在边缘计算场景中代表分散的模块,可以做积木式拼接. ...
- HCIE笔记-第七节-ICMP+ARP
ICMP重定向 作用:解决网络中的次优路径 触发:当某一个设备收到一个数据,进行转发时发现还要从该接口进行转发,于是触发ICMP重定向. 报文:Type=5,Code=0 ARP -- 地址解析协议 ...
- 2021.07.23 P3275 糖果(差分约束)
2021.07.23 P3275 糖果(差分约束) [P3275 SCOI2011]糖果 - 洛谷 | 计算机科学教育新生态 (luogu.com.cn) 重点: 1.为了满足更多更多约束条件,合适地 ...
- Dom基础(一):attribute和properrty的区别
properrty:修改对象属性不会体现到html结构中,针对DOM节点自带属性(id,className,style) attribute:修改html属性,会改变html结构,大多可以添加自定义属 ...
- 【FAQ】HMS Core推送服务与本地创建通知消息如何相互覆盖?
我们知道,单独使用HMS Core推送服务或本地创建通知消息,都可以实现通知消息的覆盖,方式分别为: 1.本地创建通知消息(简称本地通知消息) 通过notificationManager.notify ...
- 100ms的SQL把服务器搞崩溃了
前言 一个项目上线了两个月,除了一些反馈的优化和小Bug之外,项目一切顺利:前期是属于推广阶段,可能使用人员没那么多,当然对于项目部署肯定提前想到并发量了,所以早就把集群安排上,而且还在测试环境搞了一 ...
- 【CSAPP】Data Lab实验笔记
前天讲到要刚CSAPP,这一刚就是两天半.CSAPP果然够爽,自带完整的说明文档,评判程序,辅助程序.样例直接百万组走起,管饱! datalab讲的是整数和浮点数怎么用二进制表示的,考验的是用基本只用 ...
- idea打开service窗口
- Linux -4-作业练习
1.编写脚本实现登陆远程主机.(使用expect和shell脚本两种形式). expect脚本格式 expect总结点击查看 登录直接远程控制主机 #!/usr/bin/expect # # set ...