linux系统下tr命令详解

今天想和大家介绍下1个非常常用的命令——tr。这个命令可以用来替换字符串、删除指定字符以及将多个重复字符压缩只剩一个,除此之外,该命令是支持管道的。从上面的功能介绍,大家应该能够感受到该命令功能非常的强大。下面,来介绍下该命令:

tr [选项] 参数

常用选项如下:

  • -c 后接字符范围,表示除这些字符之外的字符
  • -d 删除指定字符
  • -s 将重复字符压缩只剩一个

下面通过几个案例来学习如何使用该命令

字符串替换

这个是最基本功能,没有添加任何选项时,则表示字符串替换,命令格式为:

tr 原字符串 需替换成的字符串

这里,我们还经常用到-符号,它表示连续的意思。下面来看案例:

# 字符串替换,将小写字母替换为大写字母
# echo hello,world | tr [a-z] [A-Z]
HELLO,WORLD

删除字符

通过选项-d来删除指定的字符,通过-d -c选项可以用来保留指定的字符。下面来看案例

# 删除指定字符ae
# echo 'There are apples' | tr -d 'ae'
Thr r ppls

# 删除指定字符,只保留数字和字母及换行符,其他的字符全部删除
# echo 'sSwd,aw23e;sw aswe' | tr -d -c 'a-zA-Z0-9\n'
sSwdaw23eswaswe

压缩字符

这个功能非常的常用,它可以来将连续重复的字符压缩成只留一个。我们经常用它来删除连续的空格只留一个空格,删除连续的换行符只留一个换行符。想要完成压缩字符的功能,需要使用-s选项。

# 删除连续的空格只留下一个(我们也经常删除连续的换行符只留一个)
# echo -e "hello    world.\n\n\n" | tr -s ' \n'
hello world.

上面的几个例子比较简单,可能看不出这个命令的威力,下面再来看几个稍微复杂点的案例。

我们知道,cut对于连续空格的处理不是很擅长。如果想用cut来选取df命令显示结果的第二列,是办不到的。这个时候,如果首先使用tr命令将多个连续空格压缩成一个,那么cut命令就能够来满足需要了。

# df -h | tr -s ' \t' | cut -d ' ' -f 2
Size
40G
487M
497M
497M
497M
100M

可以看到,通过tr的处理,cut现在能够获取到第二列信息了。

tr这个命令功能很强大,用法非常的简单,希望大家都能掌握并应用它。