分享
 
 
 

tr的使用方法

王朝other·作者佚名  2008-05-19
窄屏简体版  字體: |||超大  

tr用来从标准输入中通过替换或删除操作进行字符转换。t r主要用于删除文件中控制字符或进行字符转换。使用t r时要转换两个字符串:字符串1用于查询,字符串2用于处理各种转换。

t r刚执行时,字符串1中的字符被映射到字符串2中的字符,然后转换操作开始。

本章内容有:

* 大小写转换。

* 去除控制字符。

* 删除空行。

带有最常用选项的t r命令格式为:

t r - c - d - s [ " s t r i n g 1 _ t o _ t r a n s l a t e _ f r o m " ] [ " s t r i n g 2 _ t o _ t r a n s l a t e _ t o " ] i n p u t _

f i l e

这里:

-c 用字符串1中字符集的补集替换此字符集,要求字符集为A S C I I。

-d 删除字符串1中所有输入字符。

-s 删除所有重复出现字符序列,只保留第一个;即将重复出现字符串压缩为一个字符

串。

I n p u t - f i l e是转换文件名。虽然可以使用其他格式输入,但这种格式最常用。

12.1.1 字符范围

使用t r时,可以指定字符串列表或范围作为形成字符串的模式。这看起来很像正则表达式,但实际上不是。指定字符串1或字符串2的内容时,只能使用单字符或字符串范围或列表。

[a-z] a-z内的字符组成的字符串。

[A-Z] A-Z内的字符组成的字符串。

[0-9] 数字串。

/octal 一个三位的八进制数,对应有效的A S C I I字符。

[O*n] 表示字符O重复出现指定次数n。因此[ O * 2 ]匹配O O的字符串。

大部分t r变种支持字符类和速记控制字符。字符类格式为[:c l a s s ],包含数字、希腊字母、

空行、小写、大写、c n t r l键、空格、点记符、图形等等。表1 2 - 1包括最常用的控制字符的速记方式及三位八进制引用方式。

当用一个单字符替换一个字符串或字符范围时,注意字符并不放在方括号里( [ ])。一些系统也可以使用方括号,例如可以写成["\ 0 1 2"]或"\ 0 1 2",t r也允许不加引号,因此命令中看到单引号而不是双引号时也不要感到奇怪。

像大多数系统工具一样, t r也受特定字符的影响。因此如果要匹配这些字符,需使用反斜线屏蔽其特殊含义。例如,用\ {指定花括号左边可以屏蔽其特殊含义。

表12-1 tr中特定控制字符的不同表达方式

速记符含义八进制方式

\ a Ctrl-G 铃声\ 0 0 7

\ b Ctrl-H 退格符\ 0 1 0

\f Ctrl-L 走行换页\ 0 1 4

\n Ctrl-J 新行\ 0 1 2

\ r Ctrl-M 回车\ 0 1 5

\t Ctrl-I tab键\ 0 11

\ v Ctrl-X \ 0 3 0

12.1.2 保存输出

要保存输出结果,需将之重定向到一个文件。下面的例子重定向输出到文件r e s u l t s . t x t。

输入文件是c o p s . t x t。

现在看一些例子。

12.1.3 去除重复出现的字符

下面文件包含了一些打印错误。这种情况时常发生,例如在v i编辑器中,偶尔按住一个键不放。

如果要去除重复字母或将其压缩在一起,使用- s选项。因为都是字母,故使用[ a - z ]。输入文件重定向到t r命令。

所有重复字符被压缩成一个。如果使用c a t命令,再将结果管道输出至t r,结果是一样的。

12.1.4 删除空行

要删除空行,可将之剔出文件。下面是一个文件p l a n e . t x t。文本间有许多空行。

使用- s来做这项工作。换行的八进制表示为\ 0 1 2,命令为:

也可以使用换行速记方式\ n,这里用单引号(通常用双引号)。

12.1.5 大写到小写

除了删除控制字符,转换大小写是t r最常用的功能。为此需指定即将转换的小写字符[ a - z ]

和转换结果[ A - Z ]。

第一个例子,t r从一个包含大小写字母的字符串中接受输入。

同样,也可以使用字符类[:l o w e r:]和[:u p p e r:]。

将文本文件大写转换为小写并输出至一个新文件,格式为:

这里f i l e - t o - t r a n s l a t e保存即将转换的文件, n e w - f i l e - n a m e为保存结果的新文件名。例如:

12.1.6 小写到大写

转换小写到大写与上一节大写到小写过程刚好相反。以下有两个例子:

将文本文件从小写转换为大写并将结果存入一个新文件,格式为:

f i l e - t o - t r a n s l a t e保存即将转换的文件, n e w - f i l e - n a m e保存结果文件,例如:

12.1.7 删除指定字符

偶尔会从下载文件中删除只包含字母或数字的列。需要结合使用- c和- s选项完成此功能。

下面的文件包含一个星期的日程表。任务是从其中删除所有数字,只保留日期。日期有大写,也有小写格式。因此需指定两个字符范围[ a - z ]和[ A - Z ],命令tr -cs "[a-z][A-Z]""[\012*]"将文件每行所有不包含在[ a - z ]或[ A - Z ](所有希腊字母)的字符串放在字符串1中并转换为一新行。- s选项表明压缩所有新行, - c表明保留所有字母不动。原文件如下,后跟t r命令:

12.1.8 转换控制字符t r的第一个功能就是转换控制字符,特别是从d o s向U N I X下载文件时,忘记设置f t p关于回车换行转换的选项时更是如此。

下面是故意没有设置转换开关的一个文本文件,是关于文具需求的一部分内容。使用c a t

- v显示控制字符。

猜想'^ ^ ^ ^ ^ ^'是t a b键。每一行以C t r l - M结尾,文件结尾C t r l - Z,以下是改动方法。

使用- s选项,查看A S C I I表。^的八进制代码是1 3 6,^ M是0 1 5,t a b键是0 11,^ Z是0 3 2 ,下面将按步骤完成最终功能。

用t a b键替换^ ^ ^ ^ ^ ^,命令为" \ 1 3 6 " " [ \ 0 11 * ] "。将结果重定向到临时工作文件s t a t . t m p。

用新行替换每行末尾的^ M,并用\ n去除^ Z,输入要来自于临时工作文件s t a t . t m p。

最后去除所有的控制字符,文件就可以使用了。

12.1.9 快速转换

如果需要删除文件中^ M,并代之以换行。使用命令:

或者用下述命令得同样结果。

也可以用下述命令:

另一个一般的D o s到U N I X转换是命令:

将删除所有^ M和^ Z,代之以换行。

要删除所有的t a b键,代之以空格,使用命令:

替换p a s s w d文件中所有冒号,代之以t a b键,可以增加可读性。将冒号引起来,指定替换字符串中t a b键八进制值0 11,下面是p a s s w d文件,后跟t r命令结果:

或者用下述命令得同样结果。这里使用t a b键的速记符。

12.1.10 匹配多于一个字符

可以使用[ c h a r a c t e r * n ]格式匹配多于一个字符。下述文件列出系统硬盘信息,其中包含了

系统已经注册的和未识别的。第一列是数字,如果不全是0,表明第二列相应硬盘已经注册。

有时全部为0看起来很烦人,找个吸引人注意力的符号来代替它,以便一眼就能看出哪个硬盘已注册,哪个不可识别。原文件如下:

从文件列表中知道,有一个硬盘未注册,因此用星号代替所有的0。模式为[ 0 * 4 ],意即匹配至少4个0,替换字符串为星号,过滤命令及结果如下:

现在从文件中可以直接看出哪个未注册。

12.2 小结

t r主要用于字符转换或者抽取控制字符。本章所有功能都可以用s e d来完成,但有些人宁愿使用t r,因为t r更加快捷、容易。

 
 
 
免责声明:本文为网络用户发布,其观点仅代表作者个人观点,与本站无关,本站仅提供信息存储服务。文中陈述内容未经本站证实,其真实性、完整性、及时性本站不作任何保证或承诺,请读者仅作参考,并请自行核实相关内容。
2023年上半年GDP全球前十五强
 百态   2023-10-24
美众议院议长启动对拜登的弹劾调查
 百态   2023-09-13
上海、济南、武汉等多地出现不明坠落物
 探索   2023-09-06
印度或要将国名改为“巴拉特”
 百态   2023-09-06
男子为女友送行,买票不登机被捕
 百态   2023-08-20
手机地震预警功能怎么开?
 干货   2023-08-06
女子4年卖2套房花700多万做美容:不但没变美脸,面部还出现变形
 百态   2023-08-04
住户一楼被水淹 还冲来8头猪
 百态   2023-07-31
女子体内爬出大量瓜子状活虫
 百态   2023-07-25
地球连续35年收到神秘规律性信号,网友:不要回答!
 探索   2023-07-21
全球镓价格本周大涨27%
 探索   2023-07-09
钱都流向了那些不缺钱的人,苦都留给了能吃苦的人
 探索   2023-07-02
倩女手游刀客魅者强控制(强混乱强眩晕强睡眠)和对应控制抗性的关系
 百态   2020-08-20
美国5月9日最新疫情:美国确诊人数突破131万
 百态   2020-05-09
荷兰政府宣布将集体辞职
 干货   2020-04-30
倩女幽魂手游师徒任务情义春秋猜成语答案逍遥观:鹏程万里
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案神机营:射石饮羽
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案昆仑山:拔刀相助
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案天工阁:鬼斧神工
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案丝路古道:单枪匹马
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:与虎谋皮
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:李代桃僵
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:指鹿为马
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案金陵:小鸟依人
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案金陵:千金买邻
 干货   2019-11-12
 
推荐阅读
 
 
 
>>返回首頁<<
 
靜靜地坐在廢墟上,四周的荒凉一望無際,忽然覺得,淒涼也很美
© 2005- 王朝網路 版權所有