tr本意是traslate,转换。

用法是:tr [options] 'set1' 'set2'

解释:tr命令只能以stdin为输入,把输入的内容里set1的内容替换为对应的set2的内容。如果set1和set2长度相等,那么这就是一个一对一的映射,如果set1比set2多,那么set1多出来的部分会对应set2最后一个,反之,set2多出来的部分想会被忽略。

如果是连续的字符,我们可以使用'a-z' 这样的形式。如果不连续,那么就是三个字符。

这个命令是处理简易文本内容的比较好用的命令。

只能接受stdin意味着,它只能使用管道的方式来获取前一个命令的输出作为自己的输入。那么分两种情况,如果我们要处理的内容在文件里,可以使用cat把内容读到stdin,否则如果是在shell脚本的变量里或者是终端里的字符串,可以使用echo命令。

一般的命令比如cat,是既可以接受一个管道的输入,也可以通过参数指定文件名来以一个文件作为输入,但有些命令却是只可以以stdin为输入,比如这里的tr。

#!/bin/bash

a="abcde"

b=$(echo $a | tr 'a-z' 'A-Z')

echo $b

b=$(cat 't.txt' | tr 'a-z' 'A-Z')

echo $b

这是该命令的输入。该命令的用处在于比如前一个命令输出了很多内容,想把这些内容转为一个数组,就可以使用tr把标记字符转为空格,然后赋值给一个数组。

其他用法:

删除字符:

使用-c参数,可以吧set1里的字符删除。

【shell】tr_赋值

压缩字符:

使用-s参数,把多个连续的相同字符压缩成一个

【shell】tr_shell_02