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

相关推荐
蘑菇丁15 分钟前
招聘大数据运维工程师(郑州)
大数据·运维
NiceCloud喜云27 分钟前
Claude Code 跑 HyperFrames 实测:本地生成 AI 视频素材全流程
java·运维·人工智能·自动化·json·音视频·飞书
似水এ᭄往昔27 分钟前
【Linux网络编程】--计算机网络基础
linux·网络·计算机网络
qq_3129201129 分钟前
服务器被攻击!完整安全加固清单汇总
运维·服务器·安全
leaves falling35 分钟前
深入理解Linux进程控制:从fork到exec,手写一个迷你Shell
linux·运维·服务器
思麟呀1 小时前
C++工业级日志项目(七)日志器核心
linux·开发语言·c++·windows
满天星83035771 小时前
【Git】原理及使用(二) (版本回退)
linux·git
cd_949217211 小时前
水处理市场升级,台州海德能环保科技凭技术创新与服务并重脱颖而出
大数据·运维·科技
Strugglingler1 小时前
【Linux Device Drivers-第九章 与硬件通讯 I/O端口,I/O内存】
linux·i/o端口·i/o内存
.YYY1 小时前
万字详解|Linux Chrony 时间服务完整学习手册
linux·运维