tr
对stdin字符进行替换、删除和压缩,基本形式tr [options] set1 set2
将输入的字符串中的set1字符转换为set2中对应位置的字符
set1、set2表示字符集,如果set1字符集长度大于set2,set2使用自身最后一个字符填充补齐,如果set2长度大于set1,set2超出的部分全部被忽略
转换大小写
echo "HELLO" | tr 'A-Z' 'a-z'
将大写字母转换为小写字母
cat sum.txt | echo $[ $(tr '\n' '+' ) 0 ]
sum.txt中每一行包含一个数字,求出所有行的和,$[]用来执行算术运算,$()和``(反引号)一样,里面的内容会被拿出来当做命令执行,执行的结果取代该位置
转码
echo 12345 | tr '0-9' '987654321'
将0转换为9,1转换为8...
删除字符
echo "hello 123" | tr -d '0-9'
删除输入中的数字
字符集补集
echo "hello 123" | tr -d -c '0-9'
删除输入中除数字外的其他字符,也就是只保留数字字符,-c set表示set对于输入字符集合的补集
压缩字符
echo "hello world, goodl luck!" | tr -s ' '
-s压缩连续相同的字符,也就是删除连续相同的字符只剩一个
tr可以像使用集合一样使用各种不同的字符类
字符类:
- alnum:字母和数字
- alpha:字母
- cntrl:控制字符(非打印字符)
- digit:数字
- graph:图形字符
- lower:小写字母
- upper:大写字母
- print:可打印字符
- punct:标点符号
- space:空白字符
- xdigit:十六进制字符
基本形式:tr [:class:] [:class:class]
例如:echo "hello" | tr [:lower:] [:upper:]