Linux常用命令-tr

命令

tr

描述

translate or delete characters
转换或删除字符

用法

1
tr [OPTION]... SET1 [SET2]

选项

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
Options:
-c 反选,即除了指定字符之外的其他字符
-d 删除指定字符
-s 缩减连续重复的字符为指定的单个字符
-t 将SET1字符转换为SET2字符

SET:
\NNN 八进制值字符NNN
\\ 反斜杠
\a 响铃
\b 退格
\f 换页
\n 新行
\r 回车
\t 水平tab
\v 垂直tab
CHAR1-CHAR2 从CHAR1到CHAR2的所有字符按升序排列
[CHAR*] 在SET2中,重复指定的字符到与SET1相同长度为止
[CHAR*REPEAT] 重复CHAR的副本,如果从0开始,则重复八进制
[:alnum:] 大小写字母和数字
[:alpha:] 大小写字母
[:blank:] 水平空格
[:cntrl:] 控制字符
[:digit:] 数字
[:lower:] 小写字母
[:upper:] 大写字母
[:graph:] 可打印字符,不包括空格
[:print:] 可打印字符,包括空格
[:punct:] 标点符号
[:space:] 水平和垂直空格
[:xdigit:] 十六进制数字
[=CHAR=] 与CHAR等价的所有字符

注意

tr命令只支持单个字符转换而非字符串整体转换

示例

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
$ cat a
a b c
aaa
BBB
abc
1 2 3
123
# 替换文件中的字符,注意这里表示a->c,b->b,c->a,而非字符串abc替换为cba
$ cat a | tr abc cba
c b a
ccc
BBB
cba
1 2 3
123
# 转换小写字母为大写字母
$ cat a | tr 'a-z' 'A-Z'
A B C
AAA
BBB
ABC
1 2 3
123
# -d删除指定字符,这里表示删除文件中a,b,c三个字符
$ cat a | tr -d abc


BBB

1 2 3
123
$ more ab
aaabbb
aabb
ab
# -s压缩多个连续的a或b显示为单个字符,不转换
$ cat ab | tr -s ab
ab
ab
ab
# -s压缩多个连续的a或b显示为单个字符,并转换为对应的x或y
$ cat ab | tr -s ab xy
xy
xy
xy
# -t将第一个字符集对应的字符转换为第二个字符集对应的字符,位数对应
$ cat ab | tr -t ab xy
xxxyyy
xxyy
xy
$ cat ab | tr -t ab x
xxxbbb
xxbb
xb
$ cat ab | tr -t a xy
xxxbbb
xxbb
xb
# -c表示取反,即只保留数字,-d删除其他字符
$ echo "abc,123" | tr -dc '0-9'
123
# 将冒号替换为换行符
$ echo $PATH | tr ':' '\n'
$ echo -e "aa\tbb\tcc" > a
$ cat a
aa bb cc
# 将tab转换为1个空格
$ tr '\t' ' ' < a
aa bb cc

$ cat a
aa
bb

cc
# 将换行符转换为空格显示
$ tr '\n' ' ' < a
aa bb cc
# 将换行符转换为垂直tab
$ tr '\n' '\v' < a
aa
bb

cc
# 删除空行
$ tr -s '\n' < a
aa
bb
cc