Linux中head与tail命令
本来以为很简单的两个命令,今天被老师一问就傻掉了.网上查了一大堆都太糙了,而且经过我实践证明都不是很严谨.
所以写个帖子,尽量把他们解释得清楚.
首先看看官方给的文档
我简单的翻译了一下
使用方法: head [option] [file]
打印前十行到标准输出
如果是多个文件,会在每个文件最开始先打印文件名以分隔
With no FILE, or when FILE is -, read standard input.
-c [-]NUM 打印每个文件的前NUM个字节
如果有’-‘的话,那么就是打印所有内容除了最后的NUM个字节.
-n [-]NUM 打印每个文件的前NUM行
如果有’-'的话,那么就是打印所有内容除了最后的NUM行.
-q 多文件中打印文件并不打印文件名称
-v 打印文件名+内容(默认单文件不显示文件名)
其实这样已经很清楚了.
以防万一,我下面会给出几个样例来理解.
这是样例文本
one
teo
three
four
five
six
seven
eight
nine
head -n 3 text
执行结果
one
two
three
head -n -3 text
one
teo
three
four
five
six
head -c 5 text
one
t
#可见,这里换行也算是一个字节的
然后就是tail了,总的来说,tail和head只是略有不同.文档我就不再放出来了.直接给使用样例吧.
样本还是前面的九个字母.
tail -c 5
nine
#这里只输出了nine,文本结束最后有一个标志字符换行占一位.
tail -c +5 text
#从第5个字节开始显示
two
three
four
five
six
seven
eight
nine
这里输出了空行,可以说验证了我上面的观点:换行也算是一个字节的.
tail-n +3 text
#从第3行开始显示
three
four
five
six
seven
eight
nine
示例结束,总结一下:head和tail总得用法是一样的
格式为:head/tail [option] [file]
在数字前面没有’+‘或’-'的时候都可以解释为:从(正数/倒数)第n行开始打印.
而head -n -N代表最后N行不显示
tail +n +N代表从第N行显示至文末
按字节的话也是一样
head -c -N代表最后N个字节不显示
tail -c +N代表从第N个字节显示
如果你已经看完的话,思考一下:直接浏览文本的第1001行到1200行的操作命令是什么呢?(通过head和tail)
本文来自博客园,作者:klaus08,转载请注明原文链接:https://www.cnblogs.com/klaus08/p/15105032.html