分享
 
 
 

Linux-tr命令

王朝学院·作者佚名  2016-05-26
窄屏简体版  字體: |||超大  

linux-tr命令 Posted on 2015-05-06 16:38 寒星月冷 阅读(...) 评论(...) 编辑 收藏tr [OPTION]... SET1 [SET2]

[功能]

转换或者删除字符。

[描述]

tr指令从标准输入设备读取数据,经过字符串转译后,输出到标准输出设备。

通过使用 tr,您可以非常容易地实现 sed 的许多最基本功能。您可以将 tr 看作为 sed 的(极其)简化的变体:它可以用一个字符来替换另一个字符,或者可以完全除去一些字符。您也可以用它来除去重复字符。这就是所有 tr 所能够做的。

tr用来从标准输入中通过替换或删除操作进行字符转换。tr主要用于删除文件中控制字符或进行字符转换。使用tr时要转换两个字符串:字符串1用于查询,字符串2用于处理各种转换。tr刚执行时,字符串1中的字符被映射到字符串2中的字符,然后转换操作开始。

参数:

-c或--complerment 取代所有不属于第一字符集的字符。

-d或--delete 删除所有属于第一字符集的字符。

-s或--squeeze-repeats 把连续重复的字符以单独一个字符表示。

-t或--truncate-set1 这个比较难理解,man上面的解释是:first truncate SET1 to length of SET2,经过我的实践发现,将set1的字符依次替换成set2中的字符,如果set1中的字符数目超过set2,那么set1多出的字符忽略。如果没有-t,那么多出的字符都替换成set2的最后一个字符。

--help 在线帮助。

--version 显示版本信息。

字符范围

指定字符串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

[举例]

*压缩文件test内容中重复的字符为一个:

$tr -s [a-z] <test

这样,会把文件中每一行的,Set1([a-z])字符串中的重复字符压缩为一个,并把处理的结果打印到标准输出,原来的文件不变。

注意这里,set1集合(也就是第一个参数[a-z])中指定的是字符集合,而不是字符串,所以这里做的是把单个字符的重复给压缩为一个,而不是字符串的重复。

例如test有一行是tttt.tgz,那么会变成t.tgz,但是hellohellohello会变成helohelohelo.

*去掉文件中多余的空行:

$tr -s "[\012]" < test

或$tr -s ["\n"] <test

这里,假设原来文件test的内容是:

111

222

333

444

运行之后,标准输出:

111

222

333

444

而原来文件的内容不会改变。

*删除文件中的^M,并代之以换行:

$tr -s "[\015]" "[\n]" <test

或$tr -s "[\r]" "[\n] <test

一般来说,windows上面编辑的文件拿到linux上面来没行的结尾可以会有这样的符号,实际上直接cat也看不出^M符号。

*替换文件test中所有冒号,代之以逗号:

$tr -s "[:]" "[,]" <test

或$tr -s ":" "," <test

*显示$PATH变量将":"变成回车:

echo $PATH | tr ":" "\n"

这里,用 echo $PATH 或者 echo $LD_LIBRARY_PATH 等类似的命令来显示路径信息的话,我们看到的将会是一大堆用冒号连接在一起的路径, tr命令可以把这些冒号转换为回车,这样,这些路径就具有很好的可读性了.

*以上命令在vi中进行处理:

1,$!tr -s ":" ","

这样,会直接修改vi编辑的文件,可以在vi内使用所有这些命令!只要记住:在tr命令前要加上您希望处理的行范围和感叹号 (!),如 1,$!tr -d '\t'(美元符号表示最后一行)。

*替换第一个参数字符集之外的字符为指定字符:

tr -c [boy] "k" <trTest

输入之后,输出如下:

kkkkokboykkookk

这里,会把属于第一个参数的字符集中的字符之外的所有,都替换成第二个参数对应的字符。第二个参数必须是单个字符,如果是多个字符,则取最后一个,例如"ka"等价于'a'.

使用"cat trTest"查看文件的内容如下:

hello

boy

good

*删除set1字符集指定的字符:

$tr -d bld <trTest

或$tr -d [bld] <trTest

输入之后,输出如下:

heo

oy

goo

这样,会删除trTest文件中的所有"bld"三个字符。这里使用cat查看trTest文件内容如下:

$cat trTest

hello

boy

good

*把文件中的小写字符转换成大写的:

$tr a-z A-Z <testTr

或$tr [a-z] [A-z] <testTr

输入之后,输出如下:

111

222

HELLO

这里,testTr内容如下:

111

222

hello

*使用-t替换字符,set1超出set2的部分忽略:

$tr -t hld boy < trTest

输入之后,输出如下:

beooo

boy

gooy

这样,会依次把h,l,d替换成b,o,y如果是hldg那么多出来的字符g忽略,如果没有-t那么多出来的所有字符被替换成boy的最后一个字符y.

这里trTest文件的内容:

$cat trTest

hello

boy

good

 
 
 
免责声明:本文为网络用户发布,其观点仅代表作者个人观点,与本站无关,本站仅提供信息存储服务。文中陈述内容未经本站证实,其真实性、完整性、及时性本站不作任何保证或承诺,请读者仅作参考,并请自行核实相关内容。
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- 王朝網路 版權所有