shell 命令:tr 常见命令和介绍

1. tr的工作原理是什么?

先记住一点,tr命令不接受指定的文件参数,而只是对标准输入进行翻译。好了,记住这点后,我们继续。 

tr的命令格式是  tr SET1 SET2

凡是在SET1中的字符,都会被替换为SET2中相应位置上的字符,简单吧! 


2. 举个例子吧:

tr的例子其实都大同小异,看一个最简单的例子: 

我们有一个包含了四个人身高的数据文件,名字叫height.txt,它的内容是这样的: 

[rocrocket@rocrocket programming]$ cat height.txt 
1.79 1.83 
1.65 1.59 

我们想搞一个恶作剧,将所有人的身高从1米级别都提高到2米级别,呵呵,一个tr就可以搞定。 
[rocrocket@rocrocket programming]$ tr 1 2 < height.txt 
2.79 2.83 
2.65 2.59  


3. 将文件里的大写变成小写

tr 'a-z' 'A-Z' < example.txt 


4. tr 的 -s 选项: repeate each input sequence ofa repeated characters that is listed in SET1 with a single occurrence of that character.

一个很经典的应用就是把不规律的空格缩减为一个空格:

[rocrocket@rocrocket programming]$ cat spaces.txt 
How   are               you? 
Fine! Thank    you! 
[rocrocket@rocrocket programming]$ tr -s  ‘’  ‘ ’ < spaces.txt 
How are you? 
Fine! Thank you! 
注意: 第一个第一个‘’是没有空格的,第二个‘ ’之间有个空格。


5. tr -d 选项: delete, delete characters in SET1

[rocrocket@rocrocket programming]$ cat spaces.txt 
How   are               you? 
Fine! Thank    you! 

[rocrocket@rocrocket programming]$ tr -d ‘ ‘ < spaces.txt 
Howareyou? 
Fine!Thankyou! 

看,该有的空格都没了…这就是-d的作用,把空格都删除了! 

如果你想把文章中的数字都删除,就tr -d [0-9] < filename就可以了。 


tr -d 还可以用来删除空行 

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



plane.txt 
9879932 Spitfire 




190992 Lancaster 




238991 Typhoon 



dtdlut@dtdlut:~$ tr -s "\n" < plane.txt 
plane.txt 
9879932 Spitfire 
190992 Lancaster 
238991 Typhoon 

6. 如何删除文件中除了某些字符外的所以其他字符呢?

需要用到 tr -c 命令:  use the complement(补集) of SET1


例子: 下 面的文件包含一个星期的日程表。任务是从其中删除所有数字,只保留日期。

dtdlut@dtdlut:~$ cat diray.txt 
mondy 1all0:5b0 
Tuesday 15:00 
wednesday 15:30 
thurday 10:30 
Fridya 09:20 


dtdlut@dtdlut:~$ tr -cs "[a-z][A-Z]" "\n" < diray.txt 
mondy 
all 

Tuesday 
wednesday 
thurday 
Fridya 



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值