tr:替换或删除字符

xiaohai 2021-06-17 11:26:03 1867人围观 标签: Linux 
简介tr命令从标准输入中替换、缩减或删除字符,并将结果写到标准输出
说明

  tr命令从标准输入中替换、缩减或删除字符,并将结果写到标准输出

格式

  tr [option] [SET1] [SET2]

常用参数说明
  • -d:删除字符
  • -s:保留连续字符的第一个字符,其他删除
  • -c:使用第一个字符串的补集取反
示例

1、默认情况

[root@localhost ~]# cat test.txt 
name,Age,Address,Num
ZhangHi,20,SiChuan,100
YangLiu,18,BeiJing,99
LiSi,21,ShangHai,10
[root@localhost ~]# 

[root@localhost ~]# tr "abc" "123" < test.txt 
n1me,Age,Address,Num
Zh1ngHi,20,SiChu1n,100
Y1ngLiu,18,BeiJing,99
LiSi,21,Sh1ngH1i,10
注意:上面是把a替换成1,b替换成2,c替换成3,而非把abc字符串替换成123

2、统一大小写

[root@localhost ~]# tr '[a-z]' '[A-Z]' <test.txt 
NAME,AGE,ADDRESS,NUM
ZHANGHI,20,SICHUAN,100
YANGLIU,18,BEIJING,99
LISI,21,SHANGHAI,10

3、删除文件中出现的zhang的每一个字符

[root@localhost ~]# tr -d "zhang" <test.txt 
me,Ae,Address,Num
ZHi,20,SiCu,100
YLiu,18,BeiJi,99
LiSi,21,SHi,10

只要包含了z、h、a、n、g这些字符,都会被删除

4、删除文件中出现的换行”\n”和制表符”\t”

[root@localhost ~]# tr -d '\n\t' < test.txt 
name,Age,Address,NumZhangHi,20,SiChuan,100YangLiu,18,BeiJing,99LiSi,21,ShangHai,10

5、删除连续的字符

[root@localhost ~]# echo "zhaaaaangggg xxxxxiao haiiiii"|tr -s zhangxiaohai
zhang xiao hai

6、取反功能

[root@localhost ~]# tr '[0-9]' '*' < test.txt #将0-9的数字全部替换成*
name,Age,Address,Num
ZhangHi,**,SiChuan,***
YangLiu,**,BeiJing,**
LiSi,**,ShangHai,**

[root@localhost ~]# tr -c '[0-9]' '*' < test.txt  #将非0-9的数字替换成*
*****************************20*********100*********18*********99******21**********10*