在 Linux 系统中,尤其是 Ubuntu 这样的发行版里,
tr命令是一个非常轻量但功能强大的工具,用于对标准输入中的字符进行替换、压缩或删除。无论你是系统管理员、开发人员,还是刚接触命令行的新手,掌握
tr命令都能极大提升你在终端中处理文本的效率。

什么是 tr 命令?
tr是 “translate” 或 “transpose” 的缩写,它从标准输入读取数据,并根据指定规则对字符进行操作,然后将结果输出到标准输出。它不能直接修改文件,但可以配合重定向或管道与其他命令协同工作。
核心语法如下:
tr [选项] SET1 [SET2]
其中
SET1和
SET2是字符集。例如,将小写字母转为大写:
echo "hello world" | tr 'a-z' 'A-Z'# 输出:HELLO WORLD
一、字符替换(Character Replacement)
这是
tr最常见的用途:将一个字符集中的每个字符替换成另一个字符集中对应位置的字符。
示例 1:大小写转换
# 小写转大写$ echo "ubuntu tr命令" | tr 'a-z' 'A-Z'UBUNTU TR命令# 大写转小写(注意:中文不受影响)$ echo "HELLO WORLD" | tr 'A-Z' 'a-z'hello world
示例 2:数字替换
# 将数字 0-9 替换为 !@#$%^&*()$ echo "12345" | tr '0-9' '!@#$%^&*()'@#$%^
注意:SET1和SET2的长度必须一致,否则行为可能不符合预期。
二、字符删除(Character Deletion)
使用
-d选项可以删除指定字符集中的所有字符。
示例 3:删除所有数字
$ echo "abc123def456" | tr -d '0-9'abcdef
示例 4:删除换行符(常用于合并多行)
$ echo -e "line1\nline2\nline3" | tr -d '\n'line1line2line3
你也可以删除空格、制表符等:
# 删除所有空格$ echo "a b c d" | tr -d ' 'abcd
三、常用选项总结
-d:删除 SET1 中指定的字符(不需 SET2)
-s:压缩重复字符(squeeze),将连续重复的字符替换为单个字符
-c:取反(complement),对 SET1 中未包含的字符进行操作
示例 5:压缩空格(-s 选项)
$ echo "a b c" | tr -s ' 'a b c
示例 6:删除非字母字符(-c 和 -d 联用)
# 保留字母,删除其他所有字符$ echo "Hello, World! 123" | tr -cd 'a-zA-Z'HelloWorld
四、实际应用场景
1. 日志清理:从日志中提取纯字母内容。
2. 密码生成:过滤掉特殊字符或数字。
3. 数据预处理:在脚本中清洗用户输入。
例如,将文件中的所有逗号替换为竖线:
cat data.csv | tr ',' '|' > new_data.txt
结语
tr命令虽小,却是 Linux文本处理 工具链中不可或缺的一环。通过本文的学习,你应该已经掌握了如何在 Ubuntu 中使用
tr进行字符替换和字符删除。记住,它总是作用于字符级别,且需要配合管道或重定向使用。
继续练习这些示例,你将能更高效地在终端中处理各种文本任务!
关键词回顾:Ubuntu tr命令、字符替换、字符删除、Linux文本处理
