rev是Linux中专用于行内字符反转的轻量命令,按字节倒序输出每行内容,保持行数、行序和换行位置不变,换行符不参与翻转;支持文件、标准输入及多文件处理,但为字节级操作,对UTF-8中文通常可用,GBK等编码易乱码。

rev 是 Linux 中专用于行内字符反转的轻量命令,不改变行数、行序和换行位置,只把每行内容从最后一个字节开始倒序输出,换行符本身不参与翻转。
基本用法:直接反转文件或标准输入
最常用形式就是传入文件名:
-
rev file.txt—— 输出 file.txt 每行反转后的内容(原文件不变) -
echo "hello" | rev—— 输出olleh -
cat data.log | rev—— 对管道来的每一行做反转
处理多文件与重定向保存结果
rev 支持一次处理多个文件,按顺序逐个反转各行:
-
rev a.txt b.txt—— 先输出 a.txt 每行反转结果,再输出 b.txt 的 -
rev input.txt > output.txt—— 把反转结果保存到新文件 -
rev file.txt | head -5—— 只看前 5 行反转效果,适合大文件预览
注意编码与中文显示问题
rev 是字节级操作,不识别字符编码:
- UTF-8 编码的中文通常能正确反转显示(如
你好世界→界世好你),因为 UTF-8 多字节字符在合理使用下边界清晰 - GBK 或混合编码文件可能乱码,例如一个汉字被拆成两个字节分别翻转,导致无法识别
- 若发现中文错位或显示异常,先用
file -i filename查编码,必要时用iconv转为 UTF-8 再 rev
与其他命令组合的实用场景
rev 常作为流水线中的一环,配合其他工具完成特定文本处理:
- 提取路径最后一段(逆向截取):
echo "/var/log/nginx/access.log" | rev | cut -d'/' -f1 | rev→access.log - 检查回文字符串:
echo "level" | rev | diff -s - <(echo "level") - 批量反转文件名(配合 shell 循环):
for f in *.txt; do mv "$f" "$(echo "$f" | rev)"; done


















