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':性能较好,流式处理

相关推荐
HalvmånEver4 小时前
Linux:进程的切换与调度(进程四)
linux·运维·服务器
运维有小邓@4 小时前
实时日志关联分析工具:智能检测潜在安全威胁
运维·网络·安全
谷隐凡二4 小时前
Docker 的核心理念及技术的简单说明
运维·docker·容器
LCG元4 小时前
终端里的"黑客帝国":htop, glances, bpytop 系统监控工具横评
linux
泡沫·4 小时前
8.项目实战:Ecshop
服务器
L***B5684 小时前
如何安装linux版本的node.js
linux·运维·node.js
LCG元5 小时前
终极武器:用 systemd 管理你的自定义应用服务(附配置文件)
linux
脏脏a5 小时前
【Linux】Linux进程状态深度解析
linux·运维·服务器
凉晓风5 小时前
Linux中常见几种自启动方式的区别
linux·运维·服务器
小熊officer5 小时前
Nginx学习
运维·学习·nginx