在Linux系统中,tr
(translate或transliterate的缩写)是一个用于字符转换和删除操作的命令行工具。它从标准输入或指定文件中读取数据,并根据指定的规则将字符替换为其他字符或者删除特定字符。
基本语法:
tr [选项] 字符集1 [字符集2]
参数说明:
- 字符集1(SET1):定义需要查找并进行转换的字符集合。
- 字符集2(SET2):如果提供,则是字符集1中字符对应的转换目标。每个字符会一对一映射到字符集2中的对应位置字符。
常用选项:
-d
或--delete
:从输入流中删除字符集1中列出的所有字符。-c
或--complement
:反向选择,即除了字符集1中列出的字符外,其余字符都将被处理(结合-d
删除除列举字符之外的所有字符)。-s
或--squeeze-repeats
:压缩连续重复的字符,仅保留一个。-t
:不常用,在某些版本中用来设置分隔符,但已被废弃。-u
或--squeeze-uniques
:删除连续重复且只出现一次的字符序列。
示例用法:
- 将大写字母转换为小写字母:
echo "HELLO, WORLD" | tr 'A-Z' 'a-z'
输出结果:hello, world
- 删除所有空格:
echo "Hello, World!" | tr -d ' '
输出结果:Hello,World!
- 替换特定字符:
echo "123abc456def" | tr '123456' 'ABCDEF'
输出结果:ABCabcDEFdef
- 删除所有非字母数字字符:
echo "Hello, World! 123" | tr -cd '[:alnum:]'
输出结果:HelloWorld123
注意:在使用tr
命令时,尤其要注意其简单替换的特点,它并不理解文本上下文,只是逐字符进行转换。对于更复杂的字符串替换和模式匹配任务,可能需要用到其他工具如sed
或awk
等。