简介
tr 指令从标准输入设备读取数据,经过字符串转译后,将结果输出到标准输出设备。
【注意】tr是单个字符处理工具,而不是字符串处理工具!
命令格式
tr [OPTION]… SET1 [SET2]
常用参数
-s | 缩减连续重复的字符成指定的单个字符 |
---|---|
-d | 删除指令字符(将重复出现字符串压缩为一个字符串) |
-c | 用字符串1中字符集的补集替换此字符集,要求字符集为ASCII |
字符集合的范围
\n | 换行 |
---|---|
回车 | |
\t | 水平制表符 |
\v | 垂直制表符 |
字符1-字符2 | 从字符1 到字符2 的升序递增过程中经历的所有字符 |
[:alnum:] | 任意数字和字母 |
[:alpha:] | 任意大小写字母 |
[:blank:] | 所有水平空格 |
[:cntrl:] | 所有控制字符 |
[:digit:] | 任意数字,相当于 0-9 |
[:graph:] | 所有可打印的字符(不包含空格符) |
[:print:] | 所有可打印的字符(包含空格符) |
[:lower:] | 任意小写字母 |
[:upper:] | 任意大写字母 |
[:punct:] | 标点符号 |
示例
[root@gkdaxue ~]# echo $PATH | tr ":" "\n"
/usr/local/sbin
/usr/local/bin
/usr/sbin
/usr/bin
/root/bin
[root@gkdaxue ~]# echo "a1213fdasf" | tr [afd] [AFO]
A1213FOAsF
[root@gkdaxue ~]# echo "abbbaacccfddd" | tr -s [abcdf]
abacfd
[root@gkdaxue ~]# echo "a1213fdasf" | tr -d "[:alpha:]"
1213
[root@gkdaxue ~]# seq 9 | tr '\n' '|'
1|2|3|4|5|6|7|8|9|[root@gkdaxue ~]#
[root@gkdaxue ~]# seq 5 | echo $[ $(tr '\n' '+') 0 ]
15
[root@gkdaxue ~]# cat tr.txt
hello world
gkdaxue
[root@gkdaxue ~]# cat tr.txt | tr -c '[hello]' '*'
hello**o*l********e*[root@gkdaxue ~]#
## 以下两个效果一样
[root@gkdaxue ~]# echo $PATH | tr [a-z] [A-Z]
[root@gkdaxue ~]# echo $PATH | tr [:lower:] [:upper:]
/USR/LOCAL/SBIN:/USR/LOCAL/BIN:/USR/SBIN:/USR/BIN:/ROOT/BIN
注意事项
当 set1 里面的内容大于 set2 时
[root@gkdaxue ~]# echo $PATH
/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/root/bin
[root@gkdaxue ~]# echo $PATH | tr [abcsi] "[ABC]"
/u]r/loCAl/]B]n:/u]r/loCAl/B]n:/u]r/]B]n:/u]r/B]n:/root/B]n
当 set1 里面的内容小于 set2 时
[root@gkdaxue ~]# echo $PATH
/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/root/bin
[root@gkdaxue ~]# echo $PATH | tr [abc] [ABCSI]
/usr/loCAl/sBin:/usr/loCAl/Bin:/usr/sBin:/usr/Bin:/root/Bin