tac 是 Linux/Unix 系统下的一个文本处理命令,用于反向显示文件内容(与 cat 命令相反)。它的名字来源于 cat 的倒序拼写,功能也是将文件内容从最后一行到第一行显示。
1. tac 基本语法
tac [选项] [文件]
| 选项 | 说明 |
|---|---|
-b | 在行前插入分隔符(默认 \n) |
-r | 将分隔符视为正则表达式 |
-s | 指定分隔符(默认是换行符 \n) |
2. tac 基本用法
(1)反向显示文件内容
tac file.txt
示例:
$ cat file.txt
Line 1
Line 2
Line 3
$ tac file.txt
Line 3
Line 2
Line 1
(2)从标准输入读取并反向输出
echo -e "A\nB\nC" | tac
输出:
C
B
A
3. tac 高级用法
(1)指定分隔符(-s)
默认 tac 按行(\n)分割,但可以自定义分隔符:
echo "A:B:C:D" | tac -s ':'
输出:
D
C
B
A
(2)在行前插入分隔符(-b)
echo -e "A\nB\nC" | tac -b
输出:
C
B
A
(-b 默认插入 \n,效果与不加 -b 相同)
(3)结合 grep 反向显示匹配行
grep "error" log.txt | tac # 反向显示所有含 "error" 的行
(4)反向显示日志文件(查看最新日志)
tac /var/log/syslog | less
(less 可以上下滚动查看)
4. tac 与 rev 的区别
| 命令 | 功能 |
|---|---|
tac | 按行反向(最后一行到第一行) |
rev | 按字符反向(每行内容左右颠倒) |
示例:
$ echo -e "123\n456" | tac
456
123
$ echo -e "123\n456" | rev
321
654
5. 常见问题
(1)tac 和 tail -r 的区别?
tac是 GNU 工具,tail -r是 BSD 风格(部分 Linux 不支持tail -r)。tac更通用,推荐使用。
(2)如何反向显示文件并保存?
tac file.txt > reversed.txt
(3)tac 能否处理二进制文件?
不能,tac 是文本处理工具,二进制文件请用 hexdump 或 xxd。
6. 总结
tac用于反向显示文件内容(最后一行到第一行)。- 常用选项:
-s(指定分隔符)-b(在行前插入分隔符)
- 典型用途:
- 反向查看日志(最新日志在前)
- 结合
grep反向显示匹配行
- 与
rev区别:tac按行反向,rev按字符反向。
tac 是日志分析和文本处理的实用工具!🚀