Linux:Head命令


Linux:Head命令

文章插图
 
零、需求有一个文件很大 , 但是我们只需要查看文件开头的一部分 。如果使用cat命令会查看整个文件就会我们想要的部分会被淹没掉 。这个时候使用head命令是明智的选择 。还有排序完以后 , 需要取前几名的时候 , 使用head事半功倍 。
一、介绍head命令可以输出文件前半部分 。默认会打印文件前10行 。如何head后面跟多个文件名 , 则每个文件都打印10行(如果文件不足10行 , 到文件结束为止) 。如果没有指定文件名或者文件名为- , 那么head将会从标准输入(键盘输入)读取 , 输出到标准输出(屏幕) 。
使用场景:
a. 获取文件前n行
b. 排序以后去前n名
二、使用2.1 语法
head [OPTION]... [FILE]...【Linux:Head命令】2.2 选项
-b K : K代表整数 , 打印文件前K个字节;如果K为负数 , 表示除了文件最后|K|(K的绝对值)个字节 , 其余全部打印 。-n K : K代表整数 , 打印文件前K行;如果K为负数 , 表示除了文件最后|K|(K的绝对值)行 , 其余全部打印 。-q: 不打印文件名(默认)-v : 总是打印文件名--help: 输出帮助信息--version : 输出版本信息这是在逗我吗 , 只给我看命令选项 。别急 , 案例都在下面呢!三、案例3.0 数据准备
假如我们有一个timewentby.com的文件 , 内容如下:
Linux:Head命令

文章插图
 
3.1 默认查看timewentby.com文件
head timewentby.com
Linux:Head命令

文章插图
 
可以看到默认输出为10行 。
3.2 查看文件前12个字节
head -c 12 timewentby.com
Linux:Head命令

文章插图
 
注意:
a. 换行符也算一个字符
b. 如果取到指定字符没有换行符 , 是不会换行的 。例如本案例中的93就没有换行 。
3.3 查看文件前5行 , 并输出文件名称
选项
-n K : K代表整数 , 打印文件前K行;如果K为负数 , 表示除了文件最后|K|(K的绝对值)行 , 其余全部打印 。-v : 总是打印文件名命令
head -v -n 5 timewentby.com
Linux:Head命令

文章插图
 
3.4 查看除了最后2行的其他行
选项
-n K : K代表整数 , 打印文件前K行;如果K为负数 , 表示除了文件最后|K|(K的绝对值)行 , 其余全部打印 。命令
head -n -2 timewentby.com
Linux:Head命令

文章插图
 
注意:这里使用 | cat -n 只是为了对比行号 。实际应用不用添加 。
3.5 查看除了最后14个字节的内容
选项
-b K : K代表整数 , 打印文件前K个字节;如果K为负数 , 表示除了文件最后|K|(K的绝对值)个字节 , 其余全部打印 。命令
head -c -14 timewentby.com
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
Linux:Head命令

文章插图
 
下面贴出一张动态图展示过程:
Linux:Head命令

文章插图
 
方法2:
grep '^[0-9]+$' timewentby.com | sort -nr | head -n 3
Linux:Head命令

文章插图
下面贴出一张动态图展示过程:
Linux:Head命令

文章插图
注意:方法1和方法2都是使用正则 , 但是写法不同 。如果想要知道差别请参考:


推荐阅读