Files
kernel_Notes/Zim/Utils/tr.txt
2012-08-08 15:17:56 +08:00

57 lines
3.3 KiB
Plaintext
Raw Permalink Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
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]" <oops.txt >result.txt
2删除空行
tr -s "[__\012__]" < plan.txt 或 tr -s ["__\n__"] <plan.txt
3有时需要删除文件中的^M并代之以换行
tr -s "[__\015__]" "[\n]" <file 或 tr -s "[\r]" "[\n]" <file
4大写到小写
cat a.txt |tr "[a-z]" "[A-Z]" >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*]" <diary.txt
6替换passwd文件中所有冒号代之以tab键可以增加可读性
tr -s "[:]" "[\011]" </etc/passwd 或 tr -s "[:]" "[\t]" </etc/passwd
7可以在vi内使用所有这些命令只要记住在tr命令前要加上您希望处理的行范围和感叹号 (!),如 1,$!tr -d '\t'(美元符号表示最后一行)。
8删除指定的字符
若要从某个文件中删除所有 单引号 ‘,请输入:
tr -d “’” <textfile > newfile