上篇写了sed命令,它是以行为单位来处理数据的,而tr命令则是以字符为单位处理数据,这里的字符指的是ASCII码。
1. 简介
tr命令是操作字符的,命令的基本格式如下
1 | tr string1 string2 |
除此之外,还有三个参数,分别是-d、-c和-s,这3个参数和上面的2个字符相互搭配,就有了多种方式。tr的输入可以用管道流,也可以用输入符<
,默认输出到屏幕,也可以通过>
符号输出到文件。
2. 替换
常用于大小写替换,会把处于string1中的字符,替换成string2中对应的字符
1 | echo 'abc MN op' | tr 'a-z' 'A-Z' |
或者单字符替换
1 | echo 'abc aaa' | tr 'a' 'A' |
3. 删除
删除需要使用-d参数,delete,通过string1指定需要删除的字符集,所以不需要string2
1 | echo 'abc MN op' | tr -d 'a-z' |
4. 反向删除
通过-c参数表示使用string1字符集的补集,complement,上面是将string1中的字符删掉,反向则是将不在string1中的删掉,下面这个命令则是把小写字母之外的字符都删除,包括空格
1 | echo 'abc MN op' | tr -d -c 'a-z' |
5. 合并连续重复的字符
通过-s参数,squeeze,压缩的意思,连续且重复的多个字符,只保留一个,通过string1指定需要压缩的字符集
1 | echo 'aaabbbccc' | tr -s 'a' |
6. 压缩并替换
当使用-s参数,并同时指定了string1和string2时,表示按照string1压缩,并且将string1中的字符替换为string2,下面这个命令表示,压缩空格,并将空格替换为-
1 | echo '2022 05 17' | tr -s ' ' '-' |