oynix

于无声处听惊雷,于无色处见繁花

shell tr命令

上篇写了sed命令,它是以行为单位来处理数据的,而tr命令则是以字符为单位处理数据,这里的字符指的是ASCII码。

1. 简介

tr命令是操作字符的,命令的基本格式如下

1
tr string1 string2

除此之外,还有三个参数,分别是-d、-c和-s,这3个参数和上面的2个字符相互搭配,就有了多种方式。tr的输入可以用管道流,也可以用输入符<,默认输出到屏幕,也可以通过>符号输出到文件。

2. 替换

常用于大小写替换,会把处于string1中的字符,替换成string2中对应的字符

1
2
3
echo 'abc MN op' | tr 'a-z' 'A-Z'

> ABC MN OP

或者单字符替换

1
2
3
echo 'abc aaa' | tr 'a' 'A'

> Abc AAA

3. 删除

删除需要使用-d参数,delete,通过string1指定需要删除的字符集,所以不需要string2

1
2
3
echo 'abc MN op' | tr -d 'a-z'

> MN

4. 反向删除

通过-c参数表示使用string1字符集的补集,complement,上面是将string1中的字符删掉,反向则是将不在string1中的删掉,下面这个命令则是把小写字母之外的字符都删除,包括空格

1
2
3
echo 'abc MN op' | tr -d -c 'a-z'

> abcop

5. 合并连续重复的字符

通过-s参数,squeeze,压缩的意思,连续且重复的多个字符,只保留一个,通过string1指定需要压缩的字符集

1
2
3
echo 'aaabbbccc' | tr -s 'a'

> abbbccc

6. 压缩并替换

当使用-s参数,并同时指定了string1和string2时,表示按照string1压缩,并且将string1中的字符替换为string2,下面这个命令表示,压缩空格,并将空格替换为-

1
2
3
echo '2022   05  17' | tr -s ' ' '-'

> 2022-05-17
------------- (完) -------------
  • 本文作者: oynix
  • 本文链接: https://oynix.com/2022/05/4db3067484b9/
  • 版权声明: 本博客所有文章除特别声明外,均采用 BY-NC-SA 许可协议。转载请注明出处!

欢迎关注我的其它发布渠道