情景

会点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. uva 10808 - Rational Resistors(基尔霍夫定律+高斯消元)

    题目链接:uva 10808 - Rational Resistors 题目大意:给出一个博阿含n个节点,m条导线的电阻网络,求节点a和b之间的等效电阻. 解题思路:基尔霍夫定律,不论什么一点的电流向 ...

  2. C++父子类继承时的隐藏、覆盖、重载

    存在父子类继承关系时,若有同名成员函数同时存在,会发生隐藏.覆盖和重载这几种情况.对于初学者也比较容易混淆,为此,我整理了一下我的个人看法,仅供参考.希望对大家理解有帮助,也欢迎指正. 1.父子类继承 ...

  3. android studio - 使android studio 在提示时不区分大小写

  4. CCNA2.0笔记_OSI模型

    OSI模型分为七层: –由下到上分别为物理层.数据链路层.网络层.传输层.会话层.表示层.应用层. 特点:1.OSI模型每层都有自己的功能集:2.层与层之间相互独立又相互依靠:3.上层依赖于下层,下层 ...

  5. 关于dbutils中QueryRunner看批量删除语句batch

    //批量删除 public void delBooks(String[] ids) throws SQLException { QueryRunner qr = new QueryRunner(C3P ...

  6. Java泛型小结

    本来想着写一篇总结Java泛型的文章,但是却发现了一篇不错的博文,引用自: http://www.cnblogs.com/lwbqqyumidi/p/3837629.html#undefined 现摘 ...

  7. linux引导模式两种

    https://www.ibm.com/developerworks/cn/linux/l-bootload.html

  8. 11 jsp脚本调用java代码

    大多数情况下, jsp 文档的大部分由静态文本(html)构成, 为处理该页面而创建的 servlet 只是将它们原封不动的传递给客户端, 原封不动的传送给客户端有两个小例外: 1. 如果想传送 &l ...

  9. 本地连接linux虚拟机的方法

    1.给虚拟机添加一个ehtX: 2. 3.添加一个ethX 4. 5.设置使用的是哪一个网卡,ifconfig的时候变会得到相应的ip 6. 再在cmd那ping ifconfig出来的自动获取的ip ...

  10. JavaScript如何实现计时功能。

    JavaScript如何实现计时功能. 解答:<script> window.setTimeout( “window.location = ‘http://www.csdn.net ‘; ...