简介

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:] 标点符号

示例

  1. [root@gkdaxue ~]# echo $PATH | tr ":" "\n"
  2. /usr/local/sbin
  3. /usr/local/bin
  4. /usr/sbin
  5. /usr/bin
  6. /root/bin
  7. [root@gkdaxue ~]# echo "a1213fdasf" | tr [afd] [AFO]
  8. A1213FOAsF
  9. [root@gkdaxue ~]# echo "abbbaacccfddd" | tr -s [abcdf]
  10. abacfd
  11. [root@gkdaxue ~]# echo "a1213fdasf" | tr -d "[:alpha:]"
  12. 1213
  13. [root@gkdaxue ~]# seq 9 | tr '\n' '|'
  14. 1|2|3|4|5|6|7|8|9|[root@gkdaxue ~]#
  15. [root@gkdaxue ~]# seq 5 | echo $[ $(tr '\n' '+') 0 ]
  16. 15
  17. [root@gkdaxue ~]# cat tr.txt
  18. hello world
  19. gkdaxue
  20. [root@gkdaxue ~]# cat tr.txt | tr -c '[hello]' '*'
  21. hello**o*l********e*[root@gkdaxue ~]#
  22. ## 以下两个效果一样
  23. [root@gkdaxue ~]# echo $PATH | tr [a-z] [A-Z]
  24. [root@gkdaxue ~]# echo $PATH | tr [:lower:] [:upper:]
  25. /USR/LOCAL/SBIN:/USR/LOCAL/BIN:/USR/SBIN:/USR/BIN:/ROOT/BIN

注意事项

当 set1 里面的内容大于 set2 时

  1. [root@gkdaxue ~]# echo $PATH
  2. /usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/root/bin
  3. [root@gkdaxue ~]# echo $PATH | tr [abcsi] "[ABC]"
  4. /u]r/loCAl/]B]n:/u]r/loCAl/B]n:/u]r/]B]n:/u]r/B]n:/root/B]n

当 set1 里面的内容小于 set2 时

  1. [root@gkdaxue ~]# echo $PATH
  2. /usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/root/bin
  3. [root@gkdaxue ~]# echo $PATH | tr [abc] [ABCSI]
  4. /usr/loCAl/sBin:/usr/loCAl/Bin:/usr/sBin:/usr/Bin:/root/Bin