![ed18fb7afff38a3e1c47af43fb49c7e5.png](https://img-blog.csdnimg.cn/img_convert/ed18fb7afff38a3e1c47af43fb49c7e5.png)
Linux:Head命令好像没有比这篇更详细的了吧
零、需求
有一个文件很大,但是我们只需要查看文件开头的一部分。如果使用cat命令会查看整个文件就会我们想要的部分会被淹没掉。这个时候使用head命令是明智的选择。还有排序完以后,需要取前几名的时候,使用head事半功倍。
一、介绍
head命令可以输出文件前半部分。默认会打印文件前10行。如何head后面跟多个文件名,则每个文件都打印10行(如果文件不足10行,到文件结束为止)。如果没有指定文件名或者文件名为-,那么head将会从标准输入(键盘输入)读取,输出到标准输出(屏幕)。
使用场景:
a. 获取文件前n行
b. 排序以后去前n名
二、使用
2.1 语法
head [OPTION]... [FILE]...
2.2 选项
-b K : K代表整数,打印文件前K个字节;如果K为负数,表示除了文件最后|K|(K的绝对值)个字节,其余全部打印。-n K : K代表整数,打印文件前K行;如果K为负数,表示除了文件最后|K|(K的绝对值)行,其余全部打印。-q: 不打印文件名(默认)-v : 总是打印文件名--help: 输出帮助信息--version : 输出版本信息
![c08dc6927747be8485b003e01f2574ed.png](https://img-blog.csdnimg.cn/img_convert/c08dc6927747be8485b003e01f2574ed.png)
Linux:Head命令好像没有比这篇更详细的了吧
这是在逗我吗,只给我看命令选项。别急,案例都在下面呢!
三、案例
3.0 数据准备
假如我们有一个timewentby.com的文件,内容如下:
![4cacc17a4794d4220940354e146f55ea.png](https://img-blog.csdnimg.cn/img_convert/4cacc17a4794d4220940354e146f55ea.png)
Linux:Head命令好像没有比这篇更详细的了吧
3.1 默认查看timewentby.com文件
head timewentby.com
![e9b5cc9f8e403098a0c788dd910b3d2c.png](https://img-blog.csdnimg.cn/img_convert/e9b5cc9f8e403098a0c788dd910b3d2c.png)
Linux:Head命令好像没有比这篇更详细的了吧
可以看到默认输出为10行。
3.2 查看文件前12个字节
head -c 12 timewentby.com
![3650b59de7898cc198e45b55108f1f60.png](https://img-blog.csdnimg.cn/img_convert/3650b59de7898cc198e45b55108f1f60.png)
Linux:Head命令好像没有比这篇更详细的了吧
注意:
a. 换行符也算一个字符
b. 如果取到指定字符没有换行符,是不会换行的。例如本案例中的93就没有换行。
3.3 查看文件前5行,并输出文件名称
选项
-n K : K代表整数,打印文件前K行;如果K为负数,表示除了文件最后|K|(K的绝对值)行,其余全部打印。-v : 总是打印文件名
命令
head -v -n 5 timewentby.com
![a3180b9189d3c2538d17b18766273d9c.png](https://img-blog.csdnimg.cn/img_convert/a3180b9189d3c2538d17b18766273d9c.png)
Linux:Head命令好像没有比这篇更详细的了吧
3.4 查看除了最后2行的其他行
选项
-n K : K代表整数,打印文件前K行;如果K为负数,表示除了文件最后|K|(K的绝对值)行,其余全部打印。
命令
head -n -2 timewentby.com
![62b498c0607901f158af5927f56a3648.png](https://img-blog.csdnimg.cn/img_convert/62b498c0607901f158af5927f56a3648.png)
Linux:Head命令好像没有比这篇更详细的了吧
注意:这里使用 | cat -n 只是为了对比行号。实际应用不用添加。
3.5 查看除了最后14个字节的内容
选项
-b K : K代表整数,打印文件前K个字节;如果K为负数,表示除了文件最后|K|(K的绝对值)个字节,其余全部打印。
命令
head -c -14 timewentby.com
![4f90905fc85ddad4d2fbe8e463a5535b.png](https://img-blog.csdnimg.cn/img_convert/4f90905fc85ddad4d2fbe8e463a5535b.png)
Linux:Head命令好像没有比这篇更详细的了吧
说明:
a. 最后14个字节= 最后一行全行(9个字节) + 倒数第二行的.com(4字节) + 倒数第二行换行符(1字节)
b. 所以最后一行显示的是: Welcome to https://timewentby , 因为没有换行符,所以和我们的命令行在一行内。
3.6 对文件中每行的数字行(包含数字的行)进行降序排序,并取前三名
方法1:
grep -P '^s*d+s*$' timewentby.com | sort -nr | head -n 3
![24cc76f2e49b3634807e6236ed35a2a1.png](https://img-blog.csdnimg.cn/img_convert/24cc76f2e49b3634807e6236ed35a2a1.png)
下面贴出一张动态图展示过程:
![c3bdb431bf8d289b6bef3c528b7f5e14.gif](https://img-blog.csdnimg.cn/img_convert/c3bdb431bf8d289b6bef3c528b7f5e14.gif)
方法2:
grep '^[0-9]+$' timewentby.com | sort -nr | head -n 3
![71b4d3583762d102679eb1512d688177.png](https://img-blog.csdnimg.cn/img_convert/71b4d3583762d102679eb1512d688177.png)
Linux:Head命令好像没有比这篇更详细的了吧
下面贴出一张动态图展示过程:
![3176912b57449e510631f5f1919f04ef.gif](https://img-blog.csdnimg.cn/img_convert/3176912b57449e510631f5f1919f04ef.gif)
Linux:Head命令好像没有比这篇更详细的了吧
注意:方法1和方法2都是使用正则,但是写法不同。如果想要知道差别请参考:
Linux: 用了怎麼久Grep命令,這些可能你還不知道?
方法3:
sed -n '/^[0-9]+$/p' timewentby.com | sort -gr | head -3
![0bb0ac8abcb522e6a7db5224909109d8.png](https://img-blog.csdnimg.cn/img_convert/0bb0ac8abcb522e6a7db5224909109d8.png)
下面贴出一张动态图展示过程:
![c61576855c92ceac4c210512a98cfbd0.gif](https://img-blog.csdnimg.cn/img_convert/c61576855c92ceac4c210512a98cfbd0.gif)
Linux:Head命令好像没有比这篇更详细的了吧
还有以下其他的方法,因为篇幅有限,所以这里不做过多的叙述。感兴趣的话可以自己试试。
![b8eb2e0f5d82fa65850171df869f320c.png](https://img-blog.csdnimg.cn/img_convert/b8eb2e0f5d82fa65850171df869f320c.png)
Linux:Head命令好像没有比这篇更详细的了吧
四、总结
到这里我相信通过以上的案例你对head命令也会有一个更深刻的认识。是不是觉得so easy .本片文章就写到这里了。如果你有什么疑问,欢迎留言。
如果你觉得这篇文章帮助到您了,麻烦您给点个赞,要是能关注就更好了!您的点赞和关注是对我最大的鼓励,同时也激励我创作出更好的作品。