linux之字符转换tr命令详解
tr - translate or delete characters
tr是用来转换或者删除某些字符,只能从标准输入中获取参数,不能从命令行获取参数,所以tr命令常与管道符结合使用。
注意:tr命令是对单个字符的处理,可以将一个字符替换为另一个字符,不能对一个字符串替换为另一个字符串
【1】tr基本的写法
tr写法:
cat b.txt | tr 'abc' 'ABC'
将a替换为A,b替换为B,c替换为C
tr后跟两个字符集合:set1和set2,将set1中的字符依次替换为set2中对应位置的字符,所以set1中的字符的数量要与set2中字符的数量相等,例如set1为’abc’,则set中也应该是3个字符’ABC’。
【2】如果set1和set2中字符的数量不相等则会进行如下规则替换
案例1:
cat b.txt | tr 'abc' 'ABCDE'
a替换为A,b替换为B,c替换为C,DE忽略
案例2:
cat b.txt | tr 'abcde' 'ABC'
a替换为A,b替换为B,c替换为C,d替换为C,e替换为C
【3】字符集中可以使用参数和转义字符
案例1:
a="ABC"
cat b.txt | tr "abc" "$a"
案例2:
a="AB"
cat b.txt | tr "abc" "${a}C"
案例3:将换行符替换成$
cat b.txt | tr "\n" "$"
案例4:将tab替换为$
cat b.txt | tr "\t" "$"
【4】tr命令常用的几个参数
案例1:删除字符abc
cat b.txt | tr -d 'abc'
案例2:将连续的相同字符压缩为一个字符
cat b.txt | tr -s 'abc'
aaa压缩为a,aa压缩为a,bbb压缩为b,bb压缩为b……