tr用法

tr用来从标准输入中通过替换或删除操作进行字符转换。

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


带有最常用选项的t r命令格式为:
tr-c-d-s["string1_to_translate_from"]["string2_to_translate_to"]  input_
file
这里:
[list]
[*]-c 用字符串1中字符集的补集替换此字符集,要求字符集为 ASCII。
[*]-d 删除字符串1中所有输入字符。
[*]-s 删除所有重复出现字符序列,只保留第一个;即将重复出现字符串压缩为一个字符
[/list]


去除重复的字
-bash-3.00$ cat oops.txt
And the cowwwwwwws went homeeeeeeeeeeeeeeeeeeeeeeeee
or did theyyyyyyyyyyyyyyyyyyyy


-bash-3.00$ tr -s "[a-z]" <oops.txt
And the cows went home
or did they


去除空格行
-bash-3.00$ cat plane.txt
123 shihai

567 yangshihai


8910 I love you


12356 iuiuweirui


-bash-3.00$ tr -s "[\012]" <plane.txt
123 shihai
567 yangshihai
8910 I love you
12356 iuiuweirui

-bash-3.00$ tr -s ["\n"] < plane.txt
123 shihai
567 yangshihai
8910 I love you
12356 iuiuweirui


小写改大写
-bash-3.00$ echo "May DAY,May ADY,COING down.." | tr "[a-z]" "[A-Z]"
MAY DAY,MAY ADY,COING DOWN..

大写改小写
-bash-3.00$ echo "May DAY,May ADY,COING down.." | tr "[A-Z]" "[a-z]"
may day,may ady,coing down..
-bash-3.00$ echo "May DAY,May ADY,COING down.." | tr "[:upper:]" "[:lower:]"
may day,may ady,coing down..



转换控制字符
tr的第一个功能就是转换控制字符,特别是从 dos向UNIX下载文件时,忘记设置ftp关于回车换行转换的选项时更是如此。下面是故意没有设置转换开关的一个文本文件,是关于文具需求的一部分内容。
使用 cat- v显示控制字符。
-bash-3.00$ cat -v plane.txt
123 shihai

567 yangshihai


8910 I love you


12356 iuiuweirui
^[
-bash-3.00$ tr -s "[\136]" "[\01*]" <plane.txt > stat.tmp
-bash-3.00$ cat stat.tmp
123 shihai

567 yangshihai


8910 I love you


12356 iuiuweirui

[b]快速转换[/b]
-bash-3.00$ cat diary.txt
monday 10:50
tuesday 15:30
wednesday 15:30
thurday 10:30
Friday 09.20
-bash-3.00$ tr "[:]" "[\t]" <diary.txt
monday 10 50
tuesday 15 30
wednesday 15 30
thurday 10 30
Friday 09.20



[b]匹配多于一个字符[/b]
可以使用[character*n ]格式匹配多于一个字符。下述文件列出系统硬盘信息,其中包含了系统已经注册的和未识别的。第一列是数字,如果不全是 0,表明第二列相应硬盘已经注册。有时全部为0看起来很烦人,找个吸引人注意力的符号来代替它,以便一眼就能看出哪个硬盘已注册,哪个不可识别。原文件如下:
/home/l/g/tomotoboy >tr "['0'*4]" "*" < hdisk.txt
1293 hdisk3
4512 hdisk12
0000 hdisk5
4993 hdisk12
2994 hdisk7
0000 hdisk9

不知道怎么回事结果不是我想要的,纳闷中…… :(
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值