tr 命令的功能是转换或删除字符。
用法:tr [OPTION]... SET1 [SET2]
选项:
-c, -C, --complement 用 SET2 替换 SET1 中没有包括的字符
-d, --delete 删除 SET1 中的字符
-s, --squeeze-repeats 压缩 SET1 中重复的字符
-t, --truncate-set1 将 SET1 截成与 SET2 一样的长度
--help 帮助文档
--version 版本信息
SET 包含的特殊字符如下:
\NNN 八进制值的字符 NNN (1 to 3 为八进制值的字符)
\\ 反斜杠
\a 铃声
\b 退格符
\f 换页符
\n 换行符
\r 回车符
\t 水平制表符
\v 垂直制表符
CHAR1-CHAR2 从 CHAR1 到 CHAR2 的所有字符,升序
[CHAR*] 重复 SET2 中的 CHAR 到与 SET1 相同长度为止
[CHAR*REPEAT] 重复 SET2 中的 CHAR 到 REPEAT 指定的长度,REPEAT单位是8进制数
[:alnum:] 所有的字母和数字
[:alpha:] 所有字母
[:blank:] 水平制表符,空白等
[:cntrl:] 所有控制字符
[:digit:] 所有的数字
[:graph:] 所有可打印字符,不包括空格
[:lower:] 所有的小写字符
[:print:] 所有可打印字符,包括空格
[:punct:] 所有的标点字符
[:space:] 所有的横向或纵向的空白
[:upper:] 所有大写字母
[:xdigit:] 所有16进制数
[=CHAR=] CHAR
使用示例:
1. 不加选项:
[root@server dir]# echo "Merry Christmas" | tr a-z A-Z
MERRY CHRISTMAS
[root@server dir]# echo "Merry Christmas" | tr [:lower:] [:upper:]
MERRY CHRISTMAS
[root@server dir]# echo "Merry Christmas" | tr r a
Meaay Chaistmas
2. -s 选项:
[root@server dir]# echo "aaabbbeeecccddd" | tr -s abcde
abecd
3. -d 选项:
[root@server dir]# echo "Merry Christmas" | tr -d r
Mey Chistmas
4. -t 选项:
[root@server dir]# echo "Merry Christmas" | tr -t a-z A-N
MErry CHrIstMAs
[root@server dir]# echo "Merry Christmas" | tr a-z A-N
MENNN CHNINNMAN
可以看到,在不使用 -t 时,如果 SET2 的长度小于 SET1,SET1 中有但 SET2 中没有的字符,将不会被替换。在使用 -t 时,如果 SET2 的长度小于 SET1,SET1 中有但 SET2 中没有的字符,将被 SET2 中最后一个字符替换。
5. -c 选项:
[root@server dir]# echo "Merry Christmas" | tr -c a-z "#"
#erry##hristmas#
把标准输入中的不包括在 SET1(a-z)的字符(M、C、空格、换行符)替换为井号(#)。