作为 Linux 用户,你是否经常为以下事情头疼?
- 日志文件里大小写混乱,需要统一格式
- 接口返回的数据用逗号分隔,但要改成空格或换行
- 批量修改配置文件、文件名、变量内容
- 数据清洗时要删除特殊字符或数字
不用打开 VS Code 慢慢改,也不用写复杂脚本 —— 一条 tr 命令就能搞定!
tr(translate)是 Linux 里最轻量、最快的文本转换工具之一,被称为命令行界的“查找-替换”大师。

一、基础用法(3 秒上手)
# 1. 小写 → 大写
echo "hello linux tips" | tr 'a-z' 'A-Z'
# 输出:HELLO LINUX TIPS
# 2. 大写 → 小写
echo "HELLO LINUX" | tr 'A-Z' 'a-z'
# 3. 字符替换
echo "a,b,c,d,e" | tr ',' ' '
# 输出:a b c d e

二、实战场景(工作中最常用)
场景1:日志分析
# 把日志全部转大写方便搜索关键词
cat app.log | tr 'a-z' 'A-Z' | grep ERROR
# 把所有空格替换成换行,方便逐行查看
cat error.log | tr ' ' '\n'
场景2:数据清洗
# CSV 转 TSV(逗号 → 制表符)
cat data.csv | tr ',' '\t' > data.tsv
# 删除所有数字
echo "user123abc456" | tr -d '0-9'
# 输出:userabc
# 删除所有标点符号
echo "hello, world! nice?" | tr -d '[:punct:]'
场景3:文件名批量处理
# 把文件名中的空格替换为下划线
ls * | tr ' ' '_'
场景4:配置与变量处理
# 环境变量转小写
echo $PATH | tr '[:upper:]' '[:lower:]'
三、进阶参数详解(让 tr 更强大)
| 参数 | 功能 | 示例 |
|---|---|---|
| -d | 删除指定字符 | tr -d '0-9' 删除所有数字 |
| -s | 压缩重复字符 | tr -s ' ' 多个空格压成一个 |
| -c | 反选字符集 | tr -c 'a-z' '\n' 非字母转换行 |
| [:class:] | 字符类 | [:lower:] [:upper:] [:space:] [:punct:] |
组合拳示例:
# 删除所有非字母和数字字符,并转小写
echo "Hello@123!World" | tr -cd '[:alnum:]' | tr 'A-Z' 'a-z'
四、效率提升技巧
# 推荐加入 ~/.bashrc 的别名
alias upper="tr 'a-z' 'A-Z'"
alias lower="tr 'A-Z' 'a-z'"
alias unspace="tr -s ' '"
# 使用
echo "hello world" | upper
cat log.txt | lower | unspace
与其他工具对比:
- 简单转换 → 用
tr(最快) - 复杂模式匹配 → 用
sed - 列处理、统计 → 用
awk
评论互动区
你最常用 tr 来处理什么场景?
- 大小写转换
- 分隔符替换
- 删除特殊字符
- 其他
欢迎留言告诉我!下一期想看 sed 进阶、awk 实战 还是 find + xargs 组合技?
点赞 + 在看 + 转发,把这条干货送给需要的朋友!
#Linux #tr命令 #命令行技巧 #运维 #数据处理 #程序员效率