Linux 【02-tac命令超详细教程】

Linux tac 命令超详细教程

tac反向逐行输出 命令,和 cat 功能相反(cat 正序读文件,tac 倒序读),常用于日志倒查、反转文本、逆向处理输出流。

一、基本语法

bash 复制代码
tac [选项] [文件]
  • 无文件时:读取标准输入(键盘/管道输出)
  • 支持多文件、管道、重定向

二、默认用法(最常用)

1. 反向查看单个文件

把文件最后一行放第一行,第一行放最后一行输出:

bash 复制代码
# 正序查看
cat test.txt

# 倒序查看
tac test.txt

示例:

复制代码
# test.txt 内容
第一行
第二行
第三行

# tac test.txt 输出
第三行
第二行
第一行

2. 结合管道(高频场景)

搭配 lsgrepdmesg、日志查询,倒查最新内容

示例1:倒查系统日志(看最新日志)
bash 复制代码
# 查看系统日志,从最后一行开始展示
cat /var/log/messages | tac

# 先过滤关键字,再倒序
grep "error" /var/log/nginx/access.log | tac
示例2:反转命令输出
bash 复制代码
ls -l | tac

三、核心选项详解

1. -r / --regex:将分隔符当作正则表达式

tac 默认以换行符 为行分隔符,-r 开启正则匹配分隔符。

2. -s 分隔符 / --separator=STRING:指定行分隔符

自定义行结束符(不再用换行),多用于处理特殊格式文本、CSV、日志片段。

用法演示

现有文本 data.txt,以 # 作为分段标记:

复制代码
段1内容#段2内容#段3内容

默认 tac 只会整行反转,指定分隔符 # 反转分段:

bash 复制代码
tac -s '#' data.txt

输出:

复制代码
段3内容#段2内容#段1内容

结合正则分隔符(-rs):

bash 复制代码
# 以数字作为分隔符反转
tac -rs '[0-9]' file.txt

3. -b / --before:将分隔符放在行首

默认分隔符在行尾,-b 让分隔符跟随到反转后的行开头,配合 -s 使用

示例:

bash 复制代码
# 原内容:a#b#c
tac -b -s '#'
# 输出:#c#b#a

4. --help:查看帮助

bash 复制代码
tac --help

5. --version:查看版本

bash 复制代码
tac --version

四、实战经典案例

案例1:倒查 Nginx 最新访问日志(生产常用)

日志文件大时,tac + grep 快速定位最新报错/请求

bash 复制代码
# 查看最新 100 条 nginx 日志(倒序)
tac /var/log/nginx/access.log | head -n 100

# 查找最新的 404 错误
tac /var/log/nginx/error.log | grep -i 404

案例2:反转多行输入(交互式)

直接执行 tac,手动输入多行,按 Ctrl+D 结束输入,自动反转:

bash 复制代码
tac
# 输入:
a
b
c
# 按下 Ctrl+D,输出:
c
b
a

案例3:反转文件并保存为新文件

不修改原文件,将反转结果写入新文件:

bash 复制代码
tac test.txt > test_rev.txt

案例4:处理无换行的长文本(自定义分隔符)

文本以 ; 分隔多条记录,批量反转:

bash 复制代码
# 原内容:1;2;3;4
tac -s ';' test.log
# 输出:4;3;2;1

案例5:结合 tail 组合(查看末尾再反转)

先取文件最后20行,再整体反转,阅读更友好:

bash 复制代码
tail -n 20 app.log | tac

五、tac 与 cat 对比

命令 作用 适用场景
cat 正序逐行输出 正常查看、拼接文件
tac 倒序逐行输出 倒查日志、逆向文本处理

六、常见注意事项

  1. 二进制文件慎用tac 面向文本,操作二进制文件会乱码。
  2. 大日志文件tac 比从头 cat 翻到末尾效率更高,优先用于日志排查。
  3. 分隔符转义 :分隔符为 * . \ 等特殊字符时,加单引号 '\' 转义。
  4. 不修改原文件:tac 只是输出反转内容,不会改动源文件。
相关推荐
GeW4 小时前
超详细!RHCE10版通用备考策略,内含评分细则解读
linux
用户041328465135 小时前
Linux 服务开机自启动怎么配置?systemctl enable 原理详解
linux
草莓熊Lotso14 小时前
【Redis 初阶】Set 类型深度解析:去重集合的运算能力与实战场景
linux·网络·数据库·windows·redis·tcp/ip·缓存
张文君14 小时前
ubuntu26.04坏道坏块分区隔离急速版260831-V0.12
linux·python
贝锐1 天前
从国产化信创设备到商用安卓终端,向日葵如何帮助企业实现统一运维管理?
linux·运维·远程控制
Julien20041 天前
调查和解决 SELinux 问题
linux·运维·服务器·网络·学习方法
小张同学a.1 天前
Docker 容器实战 1—— docker 基础与镜像构建
linux·运维·docker·容器
Best-Wishes1 天前
BurpSuite Pro教育版在linux系统中配置
linux·运维·服务器·网络安全·burpsuite
wuminyu1 天前
深入剖析 Panama Off-heap 的性能损耗与开销
java·linux·c语言·jvm·c++
虎王物联1 天前
RK3568嵌入式Linux跑Docker:内核配置排查到AIoT容器化的完整路径
linux·运维·docker·rk3568·aiot·嵌入式linux