Linux 字符的替换与删除 tr

使用较少。

tr命令用于文件内容中字符的替换与删除。


tr只能替换字符,不能替换字符串,而且通常是处理英文字符。

常用应用场景:英文大小写转化、换行与空格的处理,等。


1 语法

字符串中字符的替换,这里用于测试它的用法

echo 字符串 | tr [选项] 字符集1 字符集2

将指定字符串的字符集1的各字符依次替换为字符串2中的各字符。


字符集通常用[ ]括起来,其中包含多个字符;

字符集1中的各元素依次被字符集2中的各元素替换;

两个字符集中的元素的个数相同。


文件内容字符的替换与删除

tr [选项] 字符集1 字符集2 < 文件

tr命令将指定文件中的字符集1的各字符依次替换为字符串2中的各字符。

文件中的具体处理与echo中一致。


2 常用选项

选项 作用
-d 删除字符集1中的各个字符
-s 删除连续重复的字符,只保留第一个。

3 示例

例1:将xiaobuteach中的x替换为X

echo xiaobuteach | tr [x] [X]

img


例2:将xiaobuteach中的x替换为X,a替换为A

echo xiaobuteach | tr [xa] [XA]

img


例3:将xiaobuteach中的所有小写英文字母替换大小字母

echo xiaobuteach | tr [a-z] [A-Z]

img


例4:大小写互换

echo XiaoButeach | tr [a-zA-Z] [A-Za-z]

img


例5:删除其中的a字符

echo xiaobuteach | tr -d a

img


例6:删除其中的ab字符

echo xiaobuteach | tr -d [ab]

img


例7:删除其中的连续空格

echo "hello  xiaobuteach" | tr -s "[ ]"

img


例8:删除其中的连续空换

echo -e "1\n\n\n2\n\n3\n4\n" | tr -s "\n"

img

4 tr进行文件中的字符的替换与删除

语法

tr [选项] 字符集1 字符集2 < 文件

从文件中读取内容,替换内容显示在控制台,可结合操作符>输出到新文件中。


准备数据文件

rm -rf /test1.txt
for i in {1..5};do  echo -e "xiaobuteach$i\n\n" >> /test1.txt; done

查看文件数据如下:

img


例1:去除其中的连续换行,保留一个

tr -s "\n" < /test1.txt

运行结果

img


例2:去除其中的连续换行,保留一个,保存到文件/test2.txt中。

tr -s "\n" < /test1.txt > /test2.txt

img