echo "hello world" | tr 'hello' '12345'
输出:12445 w5r4d
解释:此处tr做了替换操作,SET1就是“hello”, SET2就是“12345”
建立映射关系:h -> 1
e -> 2
l -> 3
l -> 4 /* l字母映射了两次,后一次覆盖了前一次 */
o -> 5
所以: 输出为 12445 w5r4d
如果这个时候SET1的长度 > SET2的长度呢?
比如:echo "hello world" | tr 'hellowd' '12345'
输出:12445 55r45
w和d都映射成5了,清楚了吧....
如果这个时候SET1的长度 < SET2的长度呢?
比如:echo "hello world" | tr 'he' '12345'
输出:12llo world
SET2长度多出来的部分没用到就是了
比如:echo "hello world" | tr 'hellowd' '12345'
输出:12445 55r45
再比如:echo "hello world" | tr -t 'hellowd' '12345'
输出:12445 w5r4d
解释: -t first truncate SET1 to length of SET2
先把SET1长度截成SET2长度,然后建立映射,再替换...
echo "hello world" | tr -c '[o-q]' '1'
输出: 1111o 1o111
解释: -c 选项是取补集, 全集是ASCII字符(不确定,哈哈哈哈....)
-c '[o-q]' : 相当于SET1就等于opq三个字母以外的ASCII字符
然后你懂了吧...
echo "hello world" | tr -d 'hel'
输出: o word
解释: -d 就是将SET1中出现的字符都删掉
echo "hello world" | tr -s 'hel'
输出: helo world
解释: -s 是将SET1中出现的字符,遇到重复就紧压..
这个例子就是: 如果有多个h在一起出现, squeeze成一个h...
如果有多个e在一起出现, squeeze成一个e...
如果有多个l在一起出现, squeeze成一个l...
转载于:https://www.cnblogs.com/xiaokuang/p/4674410.html
相关资源:Linux tr命令的使用