linux从入门到精通读薄(五)tr
5-2-2 字符转换
可以用tr命令完成sed命令的编辑操作y的类似字符转换功能,但稍有不同。在一些典型的应用中,如将大写改为小写或删除标点符号等,它是一个很快和很简单的程序。这是一个真下的过滤程序。它从标准输入中读正文,将转换结果送到标准输出。
tr命令的基本格式:
tr str1 str2
字符串str1将被转换为str2中的对应字符
[例子]
tr ABCDEFG abcdefg
将大写字母转换为对就的小写字母,可以再简化一些:
tr A-G a-g
如果str1比str2短,将str2后面的字符截去;如果str1比str2长,将str2用它最后一个字符补充使它和str1等长:
tr ABC abcde等价于tr ABC abc
tr ABCDE abc等价于tr ABCDE abccc
[-c]开关
它的作用是:用所有不在str1的字符来代替str1中的字符(即str1的补)。{原著上的这句话读不太懂,需要根据例子仔细推敲。(笔者)}
[例子]
tr -c A-Za-z0-9 ' '
这将所有非字母和非数字的字符转换为空格字符,但是有一个副作用就是留下许多连在一起的空格。可以用-s开关将str2中的任何字符的多次连续出现压缩为单个字符:
$ tr -c A-Za-z0-9 ' ' <pw.test
root awmku76tr43d6 0 0 /root/ /usr1/pc /usr/local/bin/bash
cew esJ9ohd8HH89i 501 50 /usr1/carey /usr/local/bin/bash
mot dhjd83kjdJS6D 1500 60 /usr1/mot /usr/local/bin/bash
grex cj8AjoWE8h8fs 1500 60 /usr1/mot /usr/local/bin/sh
如果你只要tr命令将某些字符的多次连续出现压缩为单个字符,可以用下面的命令:
tr -s str1
其中只指定str1,它将对str1中的字符进行压缩操作。
特殊字符(如回车和ESC)难以直接放在转换字符串中,为此提供了特殊的标记:
\b 退格字符(ctrl-h)
\n 新行字符(ctrl-j)
\r 回车字符(ctrl-m)
\t Tab字符(ctrl-i)
\\ 斜杠字符;
\000 任何字符都可以用3位8进制数表示,如:
\033 ESC字符的ASCII代码(ctrl-[)
tr命令中使用的最后一个命令开关是-d
tr -d str1
它的作用是删除字符。这一选项只指定str1,它用来提供需要删除的字符清单。