head和tail命令使用

引子

突然有个问题需要解决,去掉首行。咋整?

head展示最前面的行

tail展示最后的行

awk 'NR>1'可以

sed '1d'也可以

但是,就想用head或者tail,咋整?对这俩命令不太熟悉。希望看到最后,你将会彻底掌握head和tail:

head 命令详解

head 命令用于显示文件的开头部分。

基本语法

复制代码
head [选项] [文件]

常用选项

  • -n-:显示文件的前 N 行

  • -c:显示文件的前 N 个字节

  • -q:不显示文件名(静默模式)

  • -v:总是显示文件名

tail 命令详解

tail 命令用于显示文件的末尾部分。

基本语法

复制代码
tail [选项] [文件]

常用选项

  • -n-:显示文件的最后 N 行

  • -c:显示文件的最后 N 个字节

  • -f--follow:实时追踪文件变化(常用于日志监控)

  • -F :同 -f,但在文件被轮转或删除后重新尝试打开

  • -q:不显示文件名

  • -v:总是显示文件名

这些参数很常规啊~~都是我们之前常用的~~学了个寂寞!!!

高级用法:显示文件的特定范围

从第N行到文件末尾

bash 复制代码
# 从第11行显示到文件末尾(跳过前10行)
tail -n +11 filename.txt

# 从第6行显示到文件末尾(跳过前5行)
tail -n +6 filename.txt

显示第N行到第M行

bash 复制代码
# 显示第5行到第10行
head -n 10 filename.txt | tail -n +5

# 或者使用sed
sed -n '5,10p' filename.txt

果然,任何功法都得学到高级,才能解决更高级的问题。

答案就藏在了tail的-n选项指定的参数:+N就是从第N行展示到最后一行。

既然tail -n +N 代表从+N行到最后一行,tail -n N代表最后N行。那么,head -n N代表top N,head -n -N呢?

答案: 从倒数第N行到第一行。

head命令实验:

~]# head -n 3 test-line.txt

line1

line2

line3

~]# head -n +3 test-line.txt

line1

line2

line3

~]# head -n -3 test-line.txt

line1

line2

line3

line4

line5

line6

line7

tail命令实验:

~]# tail -n 3 test-line.txt

line8

line9

line10

~]# tail -n -3 test-line.txt

line8

line9

line10

~]# tail -n +3 test-line.txt

line3

line4

line5

line6

line7

line8

line9

line10

性能比较

对于大文件:

  • tail -n +2:性能最好,直接定位到第2行开始读取

  • sed '1d':性能较好,流式处理

  • awk 'NR>1':性能较好,流式处理

相关推荐
A小辣椒5 小时前
TShark:基础知识
linux
AlfredZhao7 小时前
OCI 明明分配了 200G 系统盘,为什么 df 只看到 30G?
linux·oci
AlfredZhao1 天前
vi 删除指定范围的行,不用再反复按 dd
linux·vi
用户9718356334661 天前
银河麒麟 KY10 申威(SW64) 安装 nginx-1.16.1-2.p01.ky10.sw_64.rpm 详细步骤
linux
猪脚踏浪1 天前
linux 拷贝文件或目录到指定的位置
linux
大树882 天前
金刚石散热越强,管路越先见顶
大数据·运维·服务器·人工智能·ai
摇滚侠2 天前
Linux CentOS7 rpm 安装 MySQL 5.7
linux·运维·mysql
霸道流氓气质2 天前
领域驱动设计(DDD)在 Spring Boot 微服务中的实践指南
运维·spring boot·微服务
bush42 天前
嵌入式linux学习记录十四、术语
linux·嵌入式
载数而行5202 天前
Linux 11 动态监控指令top
linux