Content-Type: text/x-zim-wiki Wiki-Format: zim 0.4 Creation-Date: 2011-12-25T22:06:06+08:00 ====== tr ====== Created Sunday 25 December 2011 http://qubaoquan.blog.51cto.com/1246748/310811 通过使用 tr,您可以非常容易地实现 sed 的许多最基本功能。您可以将 tr 看作为 sed 的(极其)简化的变体:它可以用__一个字符来替换另一个字符__,或者可以__完全除去__一些字符。您也可以用它来__除去重复字符__。这就是所有 tr 所能够做的。 tr用来从**标准输入**中通过替换或删除操作进行字符转换。tr主要用于__删除文件中控制字符或进行字符转换__。使用tr时要转换两个字符串:字符串1用于查询,字符串2用于处理各种转换。tr刚执行时,字符串1中的字符被映射到字符串2中的字符,然后转换操作开始。 带有最常用选项的tr命令格式为: tr -c -d -s ["string1_to_translate_from"] ["string2_to_translate_to"] < input-file 这里: **-c **用字符串1中字符集的补集替换此字符集,要求字符集为ASCII。 **-d** 删除字符串1中所有输入字符。 **-s **删除所有重复出现字符序列,只保留第一个;即将重复出现字符串压缩为一个字符串。 input-file是转换文件名。虽然可以使用其他格式输入,但这种格式最常用。 2、字符范围 指定字符串1或字符串2的内容时,只能使用单字符或字符串范围或列表。 [a-z] a-z内的字符组成的字符串。 [A-Z] A-Z内的字符组成的字符串。 [0-9] 数字串。 \octal 一个__三位的八进制数__,对应有效的ASCII字符。 [O*n] 表示__字符O重复出现__指定次数n。因此[O*2]匹配OO的字符串。 tr中特定控制字符的不同表达方式 速记符含义八进制方式 \a __Ctrl-G __ 铃声\007 \b __Ctrl-H__ 退格符\010 \f Ctrl-L 水平换页\014 \n __Ctrl-J __ 换行\012 \r __Ctrl-M__ 回车\015 \t __Ctrl-I __ tab键\011 \v Ctrl-X 垂直换页\030 3、应用例子 (1)去除oops.txt里面的重复的小写字符 tr __-s __"[a-z]" result.txt (2)删除空行 tr -s "[__\012__]" < plan.txt 或 tr -s ["__\n__"] b.txt (5)删除指定字符 一个星期的日程表。任务是从其中删除所有数字,只保留日期。日期有大写,也有小写格式。因此需指定两个字符范围[a-z]和[A-Z],命令tr -cs "[a-z][A-Z]" "[\012*]" 将文件每行所有不包含在[a-z]或[A-Z](所有希腊字母)的字符串放在字符串1中并转换为一新行。-s选项表明压缩所有新行, -c表明保留所有字母不动。原文件如下,后跟tr命令: tr -cs "[a-z][A-Z]" "[\012*]" newfile