6.3.3 数据撷取

简介: 6.3.3 数据撷取

我们可以将输出的数据作一个最简单的撷取,那就是取出文件前面几行 (head) 或取出后面几行 (tail) 文字的功能。 不过,要注意的是, head 与 tail 都是以“行”为单位来进行数据撷取的。

head (取出前面几行)

head这个东西的用法自然显示出一个文件的前几行,没有加上-n这个选项,默认只显示十行,如果只要一行,那就加入“head -n 1 filename ”。


另外那个 -n 选项后面的参数较有趣,如果接的是负数,例如上面范例的-n -100时,代表列前的所有行数, 但不包括后面100行。举例来说 CentOS 7.1 的 /etc/mandb.conf 共有131行,则上述的指令“head -n -100 /etc/man_db.conf” 就会列出前面31行,后面100行不会打印出来了。


tail(取出后面几行)

有head自然就有tail,tail的用法跟head的用法差不多类似,只是显示的是后面几行。默认是显示十行,若要显示非十行,就加-n number的选项。


范例一的内容其实与head -n -xx有异曲同工之妙。当下达“tail -n +100/etc/man_db.conf” 代表该文件从100行以后都会被列出来,同样的,在man_db.conf共有131行,因此第100~131行就会被列出来。 前面的99行都不会被显示出来。


至于范例二中,由于/var/log/messages随时会有数据写入,你想要让该文件有数据写入时就立刻显示到屏幕上, 就利用 -f 这个选项,他可以一直侦测/var/log/messages这个文件,新加入的数据都会被显示到屏幕上。 直到你按下[crtl]-c才会离开tail的侦测。由于 messages 必须要 root 权限才能看,所以该范例得要使用 root 来查询。


例题:假如我想要显示 /etc/man_db.conf 的第 11 到第 20 行呢?答:在第 11 到第 20 行,那么我取前 20 行,再取后十行,所以结果就是:“ head -n 20/etc/man_db.conf | tail -n 10 ”,这样就可以得到第 11 到第 20 行之间的内容了。


这两个指令中间有个管线 (|) 的符号存在,这个管线的意思是:“前面的指令所输出的讯息,请通过管线交由后续的指令继续使用”的意思。 所以, head -n 20 /etc/man_db.conf 会将文件内的 20 行取出来,但不输出到屏幕上,而是转交给后续的 tail 指令继续处理。 因此 tail“不需要接文件名”,因为 tail 所需要的数据是来自于 head 处理后的结果。


例题:承上一题,那如果我想要列出正确的行号呢?就是屏幕上仅列出 /etc/man_db.conf 的第 11 到第 20 行,且有行号存在?答:我们可以通过 cat -n 来带出行号,然后再通过head/tail 来撷取数据即可!所以就变成如下的模样了: cat -n /etc/man_db.conf | head -n 20 |tail -n 10。

相关文章
|
4月前
|
数据采集
3.1.2 数据说明
本案例基于2022年5月10日采集的某网站前50页手机销售数据,包含手机销售信息和用户售后反馈两部分,旨在分析销售状况、用户需求及体验。通过对这些数据的深入挖掘,项目目标在于理解消费者的购买行为与偏好,并据此调整营销策略,优化售后服务,从而提升电商平台的经济效益。
47 3
|
9月前
|
数据安全/隐私保护 C++
C++程序中共用数据的保护
C++程序中共用数据的保护
61 2
|
机器学习/深度学习 算法 数据挖掘
灰太狼的数据世界(四)
灰太狼的数据世界(四)
102 0
|
存储 算法 数据可视化
灰太狼的数据世界(一)
灰太狼的数据世界(一)
172 0
|
SQL 数据可视化 数据挖掘
人人都会点数据分析 | 了解数据
人人都会点数据分析 | 了解数据
118 0
|
人工智能 算法 新能源
数据上新啦!
风机检测算法与风机分布数据集上线
数据上新啦!
|
Java 数据库连接 数据库
数据的写入
数据的写入
118 1
|
缓存 Java 数据库
对于某些不会变又经常需要用的数据的处理
本文主要讲对于某些不会变又经常需要用的数据的处理
136 0