情景

会点linux命令的人都知道head -n k和tail -n k(k≥0)的作用,但却不知道还支持head -n -k和tail -n +k的用法, 更不知道有着怎样的作用了。

图解

下面,用一张图让你搞懂它们:

除了最后k行                                                                   从k行开始

备注:方框表示文件全部内容,绿色部分表示命令产生的结果;

举例

创建一个文件,文件共10行,每行的内容依次为1-10数字,如下:

cat testfile
1
2
3
4
5
6
7
8
9
10

 
cat testfile | wc -l
10

head 命令

当k=3时,分别执行上述命令:

[bjchengpeng@hz-10-120-241-113 logs]$ head -n 3 testfile
1
2
3
[bjchengpeng@hz-10-120-241-113 logs]$ head -n +3 testfile
1
2
3
[bjchengpeng@hz-10-120-241-113 logs]$ head -3 testfile
1
2
3

 

由此可见,head -n k和head -n +k意义相同;

[bjchengpeng@hz-10-120-241-113 logs]$ head -n -3 testfile
1
2
3
4
5
6
7

-k的意义是除了最后k行的所有行。

tail 命令

[bjchengpeng@hz-10-120-241-113 logs]$ tail -n 3 testfile
8
9
10
[bjchengpeng@hz-10-120-241-113 logs]$ tail -n -3 testfile
8
9
10
[bjchengpeng@hz-10-120-241-113 logs]$ tail -3 testfile
8
9
10 
[bjchengpeng@hz-10-120-241-113 logs]$ tail -n +3 testfile
3
4
5
6
7
8
9
10

tail -n -k 命令和 tail -n k 结果一样,

+k的意义是从第k行开始,输出所有行;

来一个常规第题目:显示第3-6行

[bjchengpeng@hz-10-120-241-113 logs]$ tail -n +5 testfile | head -2
5
6
[bjchengpeng@hz-10-120-241-113 logs]$ cat testfile | head -n -4 | tail -2
5
6
[bjchengpeng@hz-10-120-241-113 logs]$ head -n -4 testfile | tail -2
5
6
[bjchengpeng@hz-10-120-241-113 logs]$ head -6 testfile | tail -2
5
6

总结

  1. head -n k=head -n +ktail -n k=tail -n -k,可以简单记忆为头正尾负

  2. 无论k前面的符号怎样,tail都是输出尾部内容,head都是输出头部内容的;

  3. 特别注意tail -n +k,这里的k表示从第K行开始;(因此上例中,head -n -3输出7行,而tail -n +3输出8行。)

  4. tail -n +k 是从第K行开始输出,head -n -k 是最后k行不要

搞懂head 和 tail 命令的更多相关文章

  1. 三文搞懂学会Docker容器技术(中)

    接着上面一篇:三文搞懂学会Docker容器技术(上) 6,Docker容器 6.1 创建并启动容器 docker run [OPTIONS] IMAGE [COMMAND] [ARG...] --na ...

  2. 搞懂ELK并不是一件特别难的事(ELK)

    本篇文章主要介绍elk的一些框架组成,原理和实践,采用的ELK本版为7.7.0版本 一.ELK介绍 1.1.ELK简介 ELK是Elasticsearch.Logstash.Kibana三大开源框架首 ...

  3. 不想再被鄙视?那就看进来! 一文搞懂Python2字符编码

    程序员都自视清高,觉得自己是创造者,经常鄙视不太懂技术的产品或者QA.可悲的是,程序员之间也相互鄙视,程序员的鄙视链流传甚广,作为一个Python程序员,自然最关心的是下面这幅图啦 我们项目组一值使用 ...

  4. c#代码 天气接口 一分钟搞懂你的博客为什么没人看 看完python这段爬虫代码,java流泪了c#沉默了 图片二进制转换与存入数据库相关 C#7.0--引用返回值和引用局部变量 JS直接调用C#后台方法(ajax调用) Linq To Json SqlServer 递归查询

    天气预报的程序.程序并不难. 看到这个需求第一个想法就是只要找到合适天气预报接口一切都是小意思,说干就干,立马跟学生沟通价格. ​ ​不过谈报价的过程中,差点没让我一口老血喷键盘上,话说我们程序猿的人 ...

  5. 架构师必须搞懂DNS【转】

    DNS,全称Domain Name System,即域名系统,搞清楚,它不是DNF地下城与勇士. DNS是怎么来的,我们知道要访问一个服务器的资源可以通过IP的形式访问,但IP地址比较难记,也不方便读 ...

  6. 搞懂分布式技术19:使用RocketMQ事务消息解决分布式事务

    搞懂分布式技术19:使用RocketMQ事务消息解决分布式事务 初步认识RocketMQ的核心模块 rocketmq模块 rocketmq-broker:接受生产者发来的消息并存储(通过调用rocke ...

  7. 搞懂分布式技术10:LVS实现负载均衡的原理与实践

    搞懂分布式技术10:LVS实现负载均衡的原理与实践 浅析负载均衡及LVS实现 原创: fireflyc 写程序的康德 2017-09-19 负载均衡 负载均衡(Load Balance,缩写LB)是一 ...

  8. 搞懂分布式技术5:Zookeeper的配置与集群管理实战

    搞懂分布式技术5:Zookeeper的配置与集群管理实战 4.1 配置文件 ZooKeeper安装好之后,在安装目录的conf文件夹下可以找到一个名为“zoo_sample.cfg”的文件,是ZooK ...

  9. 搞懂分布式技术6:Zookeeper典型应用场景及实践

    搞懂分布式技术6:Zookeeper典型应用场景及实践 一.ZooKeeper典型应用场景实践 ZooKeeper是一个高可用的分布式数据管理与系统协调框架.基于对Paxos算法的实现,使该框架保证了 ...

随机推荐

  1. Unity3D_NGUI_性能优化实践_CPU卡顿

    http://gad.qq.com/college/articledetail/7083468 博尔特以9.58秒创造了百米世界纪录,假设他是跑酷游戏的角色,卡顿一帧就足以把冠军拱手让人. Unity ...

  2. 【Android】利用Fiddler进行抓包详解教程。抓取接口以及数据,可以抓真实安卓手机或者模拟器。

    大家都知道抓包的方法很多.我这里给大家介绍介绍一种,利用fiddler进行抓包,当然比如Wireshark也可以抓包,我们这里不做介绍.我这里演示的是fiddler+天天模拟器,当然真实安卓手机也是一 ...

  3. C1编译器的实现

    总览 词法.语法分析 分析方案 词法 语法 符号表 类型系统 AST 语义检查 EIR代码生成器 MIPS代码生成器 寄存器分配 体系结构相关特性优化 使用说明 编译 运行 总览 C1语言编译器及流程 ...

  4. javaweb项目运行时错误

    1.Debug模式下进入ThreadPoolExecutor.class的解决方式 进入window-->preferences-->java-->debug-->去掉Susp ...

  5. spring的容器(控制反转、依赖注入)

    一.spring的容器 ”容器“是spring的一个重要概念,其主要作用是完成创建成员变量,并完成装配. 而容器的特点”控制反转“和”依赖注入“是两个相辅相成的概念. 控制反转:我们在使用一个类型的实 ...

  6. IE下使用jquery失效的问题(转载)

    1,然后各种调试,最后发现:把ie把关了,再打开$.get().会调用,再第二次调用的用的时候发现又不行了.于是我推断是ie缓存的问题,把ie缓存清除后,果然可以了.但是客户不可能知道清理缓存.所以只 ...

  7. Spring Boot+Drools规则引擎整合

    目的 官方的Drools范例大都是基于纯Java项目或Maven项目,而基于Spring Boot项目的很少. 本文介绍如何在Spring Boot项目上加上Drools规则引擎. POM依赖 POM ...

  8. 缓存数据库redis、memcached。 MongoDB 资源集锦

    Redis学习资源: 1.Redis学习手册 http://www.cnblogs.com/stephen-liu74/archive/2012/03/14/2349815.html 2.c#连接Re ...

  9. .NET开发笔记--对config文件的操作(1)

    1先写一些常用的公共类: 在Web.config文件中的配置: <!-- appSettings网站信息配置--> <appSettings> <add key=&quo ...

  10. visio中设置下标

    下标:ctrl+"=" 上标:ctrl+shift+"="