文档首页> IDC服务> Linux命令之tr

Linux命令之tr

发布时间:2025-12-01 00:11       

<span style="color:red;">tr</span> 是 Linux 里非常实用的字符转换工具,专门对“文本流”做替换、删除、压缩等操作,一般配合管道一起用,非常适合做日志清洗、格式转换等场景 ✨。


一、基本用法与语法

tr 的基本语法是:

tr [选项] SET1 [SET2]
​

解释:

  • <span style="color:red;">SET1</span>:源字符集,要被处理的字符集合。
  • <span style="color:red;">SET2</span>:目标字符集,用来替换成的字符集合(某些模式下可省略)。
  • [选项]:如 -d 删除、-s 压缩重复、-c 取反等,只在部分场景需要。
  • tr 不直接处理文件名,而是处理标准输入,所以通常配合 echo、cat 或重定向使用。

二、字符替换:大小写转换 🔁

echo "hello World" | tr 'a-z' 'A-Z'
​

解释:

  • echo "hello World":输出一行字符串 hello World。
  • |:管道,把前一个命令的输出作为后一个命令的输入。
  • tr 'a-z' 'A-Z':将所有在 <span style="color:red;">a-z</span> 范围内的小写字母转换成对应的大写 <span style="color:red;">A-Z</span>。
  • 执行结果:HELLO WORLD。
    这种用法常用来做大小写规范化,方便后续匹配或统计。

三、删除字符:-d 参数 🚮

echo "123-456-789" | tr -d '-'
​

解释:

  • echo "123-456-789":输出含有 - 的数字串。
  • tr -d '-':
    • -d 表示删除指定字符集中的所有字符,不做替换。
    • ' - ' 作为字符集,表示删除所有 -。
  • 执行结果:123456789。

再看一个删除换行符的例子,把多行拼成一行:

cat test.txt | tr -d '\n'
​

解释:

  • cat test.txt:逐行输出 test.txt 内容。
  • tr -d '\n':删除所有换行符(\n),把多行拼成一个连续的字符串。
  • 常用于把多行配置、IP 列表等合并成一行,便于做后续处理。

四、压缩重复字符:-s 参数(常用来压缩空格)🧹

echo "a    b     c" | tr -s ' '
​

解释:

  • 原始字符串中有很多重复空格:a␣␣␣␣b␣␣␣␣␣c。
  • -s 表示squeeze(压缩),把指定字符集中连续重复出现的字符压缩成一个。
  • ' ' 表示只处理空格字符。
  • 执行结果:a b c,多个空格被压缩为单个空格。

这在处理日志、对齐字段时非常实用,可以先压缩空格,再用 cut、awk 做字段提取。


五、取反字符集:-c 搭配删除或替换 🔍

echo "abc123!@#" | tr -cd '0-9'
​

解释:

  • -c 表示取反,即对“除了 SET1 中的字符以外”的所有字符进行操作。
  • -d 表示删除。
  • '0-9' 表示数字字符集合。
  • tr -cd '0-9':删除所有“不是数字”的字符,只保留数字。
  • 执行结果:123。

这一招非常适合做快速提取数字,比如从混杂的字符串中只保留数字 ID、端口号等。


六、常见组合场景:清理 Windows 换行符、统一格式 🧰

1)去掉 Windows 文件中的 \r(回车符)

tr -d '\r' < winfile.txt > unixfile.txt
​

解释: