Shell——tr

简介

tr 命令比较常用的是用来转换某个字符,当然也可以用来删除替换字符,只是不如sed好用。因此,在这里我就着重介绍转换字符吧。

使用

参考链接:SHELL脚本--tr命令用法和特性全解

Usage: tr [option] SET1 [SET2]

-c, -C, --complement 使用字符集1的补集 -d, --delete 删除字符集1中的字符 -s, --squeeze-repeats 压缩字符 -t, --truncate-set1

替换

不使用任何选项,同时指定两个字符集SET,那么将进行对应位置字符的替换。

  1. 两个字符集长度相同,字符将一一对应替换

    1
    2
    $ echo -n 01210 | tr 0-9 aabcdefgh
    aabaa # 01 的对应位置都是 a
  2. 字符集SET1比字符集SET2长,SET1多余的字符将替换为SET2中的最后一个字符

    1
    2
    $ echo -n 0123456789 | tr 0-9 abcd
    abcddddddd

    针对这种情况,可以使用选项 -t, --truncate-set1 对 SET1 字符集进行截断,忽略 SET1 多余的部分。

  3. 字符集SET1比字符集SET2短,SET2中多余的字符将忽略

    1
    2
    $ echo -n 0123456789 | tr 0123 abcdefghijk
    abcd45678

补集

tr -c SET1 SET2 将标准输入按照字符集 SET1 求补集并替换为字符集 SET2 。

  1. SET2 只有一个字符,补集全部替换为 SET2

    1
    2
    $ echo -n 0123456789 | tr -c 123 x 
    x123xxxxxx
  2. SET2 有多个字符,补集全部替换为 SET2 的最后以个字符

    1
    2
    $ echo -n 0123456789 | tr -c 123 xy
    y123yyyyyy

删除

tr -d SET1 删除标准输入中出现的字符集 SET1 。

压缩

tr -s SET1 [SET2] 将标准输入中连续重复出现字符集 SET1 里所列的字符压缩为一个。如果设置 SET2 则同时将替换为对应字符。

1
2
$ echo -n 0123456789123411111 | tr -ts 123 abc  
0abc456789abc4a
本文结束感谢您的阅读
感谢打赏,继续前行!