约 6711 字

约 34 分钟

#Bash 的 tr 命令

tr [OPTION]... STRING1 [STRING2]

功能

对标准输入中的字符进行翻译、压缩、删除,然后写入标准输出。

类型

可执行文件(/usr/bin/tr),属于 coreutils。

参数

  • OPTION 选项:
    • -c, -C, --complement - 转换 STRING1 中不包含的字符
    • -d, --delete - 删除 STRING1 中的字符
    • -s, --squeeze-repeats - 将最后一个参数指定的字符去重
    • -t, --truncate-set1 - 首先将 STRING1 的长度截断至和 STRING2 一样
    • --help - 显示帮助
    • --version - 显示版本
  • STRING1 - 控制字符串列表1
  • STRING2 - 控制字符串列表2

#特殊字符

转义或表示法含义
\NNN八进制值为 NNN 的字符(1 到 3 个八进制数字)
\\反斜杠
\a可听的 BEL(响铃)
\b退格符
\f换页符
\n换行符
\r回车符
\t水平制表符
\v垂直制表符
CHAR1-CHAR2从 CHAR1 到 CHAR2 的所有字符(按升序)
[CHAR*]在 ARRAY2 中复制 CHAR,直到 ARRAY1 的长度
[CHAR*REPEAT]复制 CHAR REPEAT 次,如果 REPEAT 以 0 开头,则为八进制
[:alnum:]所有字母和数字
[:alpha:]所有字母
[:blank:]所有水平空白字符
[:cntrl:]所有控制字符
[:digit:]所有数字
[:graph:]所有可打印字符(不包括空格)
[:lower:]所有小写字母
[:print:]所有可打印字符(包括空格)
[:punct:]所有标点符号
[:space:]所有水平或垂直空白字符
[:upper:]所有大写字母
[:xdigit:]所有十六进制数字
[=CHAR=]与 CHAR 等价的所有字符

#示例

$ echo "a b c" | tr ' ' '\n'        # 将空格替换为换行
a
b
c
$ echo "a b c" | tr 'abc' 'efg'     # 将 'abc' 依次替换为 'efg'
e f g
$ echo "a b c" | tr -c 'ac' '-'     # 将 'ac' 以外的字符替换为 '-'
a---c-
$ echo "a b c" | tr -d 'a'          # 删除 'a'
 b c
$ echo "aaa bbb ccc" | tr -d 'b'    # 去重 'b'
aaa  ccc

#推荐阅读

#手册

更新: 2026/1/18

作者: PlanC

创建: 2025/12/6