linux - tr命令

本文介绍Unix系统下tr命令的多种应用场景,包括字符替换、大小写转换、重复字符压缩等,并详细解析每个操作的具体含义。
tr是Unix系统非常实用的工具,其实用tr做到的事情,几乎都可用sed做到,你可以把tr当作是实现sed许多基本功能的sed“简体”。我认为tr是简单的“字符”处理工具,而sed是功能非常强大的“字符串”处理工具。
 
【注意】tr是单个字符处理工具,而不是字符串处理工具!
 
我自己用过比较实用的例子如下:
 
1、将文件file中出现的"abc"替换为"xyz"
 
# cat file | tr "abc" "xyz" > new_file
 
【注意】这里,凡是在file中出现的"a"字母,都替换成"x"字母,"b"字母替换为"y"字母,"c"字母替换为"z"字母。而不是将字符串"abc"替换为字符串"xyz"。
 
2、使用tr命令“统一”字母大小写
(小写 --> 大写)
# cat file | tr [a-z] [A-Z] > new_file
(大写 --> 小写)
# cat file | tr [A-Z] [a-z] > new_file
 
3、把文件中的数字0-9替换为a-j
 
# cat file | tr [0-9] [a-j] > new_file

4、删除文件file中出现的"Snail"字符
 
# cat file | tr -d "Snail" > new_file
 
【注意】这里,凡是在file文件中出现的'S','n','a','i','l'字符都会被删除!而不是紧紧删除出现的"Snail”字符串。
 
5、删除文件file中出现的换行'/n'、制表'/t'字符
 
# cat file | tr -d "/n/t" > new_file
 
不可见字符都得用转义字符来表示的,这个都是统一的。
 
6、删除“连续着的”重复字母,只保留第一个
 
# cat file | tr -s [a-zA-Z] > new_file
 
7、删除空行
 
# cat file | tr -s "/n" > new_file
 
8、删除Windows文件“造成”的'^M'字符
 
# cat file | tr -d "/r" > new_file
或者
# cat file | tr -s "/r" "/n" > new_file
 
【注意】这里-s后面是两个参数"/r"和"/n",用后者替换前者
 
9、用空格符/040替换制表符/011
 
# cat file | tr -s "/011" "/040" > new_file
 
10、把路径变量中的冒号":",替换成换行符"/n"
 
# echo $PATH | tr -s ":" "/n"
tr -c -d -s ["string1_to_translate_from"] ["string2_to_translate_to"] < input-file
tr用来从标准输入中通过替换或删除操作进行字符转换。tr主要用于删除文件中控制字符或进行字符转换。使用tr时要转换两个字符串:字符串1用于查询,字符串2用于处理各种转换。tr刚执行时,字符串1中的字符被映射到字符串2中的字符,然后转换操作开始。 
参数: 
  -c或--complerment   取代所有不属于第一字符集的字符。 
  -d或--delete   删除所有属于第一字符集的字符。 
  -s或--squeeze-repeats   把连续重复的字符以单独一个字符表示。 
  -t或--truncate-set1   这个比较难理解,man上面的解释是:first truncate SET1 to length of SET2,经过我的实践发现,将set1的字符依次替换成set2中的字符,如果set1中的字符数目超过set2,那么set1多出的字符忽略。如果没有-t,那么多出的字符都替换成set2的最后一个字符。 
  --help   在线帮助。 
  --version   显示版本信息。 
 
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值