`

一天一个shell_1_tr

阅读更多

 tr(translate缩写)主要用于

  • 删除文件中的控制字符 -d
  • 进行字符转换 -t 和 -c , -t是默认选项, -c表示不在SET1中的字符
  • 去重 -s

 

语法:tr [–c/d/s/t] [SET1] [SET2]
SET1: 字符集1,可以由多个[],如'[a-z][A-Z][\n]'
SET2:字符集2
-c:complement,用SET2替换SET1中没有包含的字符
-d:delete,删除SET1中所有的字符,不转换
-s: squeeze-repeats,压缩SET1中重复的字符
-t: truncate-set1,将SET1用SET2转换,一般缺省为-t
 
 可以指定 字符串序列"[abc]" 或  范围"[a-z]"  作为形成字符串的模式

  [o*n]    表示字符o重复出现指定次数n。如[o*2]匹配oo的字符串。

 

 

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

 

 tr "[0*4]" "*" < hdisk.txt

 

 

----------------------

去重

$ echo aaacccddd | tr -s [abc]
acddd
 
$ tr -s "[a-z][A-Z]" < apps.txt
----------------------
 
$ cat test.txt | tr -s ["\n"]

 

此处用-s删除了多余的换行符,如果用-d,则会删除所有的换行

------

I love linux!

                                                                                                                          
                                                                                                                          
Hello World!

-------

I love linux!

Hello World!

----------------------

大小写转换
$ echo "Hello World I Love You" |tr [-t] [a-z][A-Z]
HELLO WORLD I LOVE YOU
其中-t可省略
 

$ echo "Hello World I Love You" |tr [:lower:][:upper:]

HELLO WORLD I LOVE YOU

----------------------

 

GET / HTTP/1.1
Host: localhost:9000

 

tr -c "[a-zA-Z\n]" "$"<head

GET$$$HTTP$$$$
Host$$localhost$$$$$

 

 

tr -cs "[a-zA-Z\n]" "$"<head
GET$HTTP$
Host$localhost$

命令

 

tr    -cs   "[a-z][A-Z]"   "\n"

-s和-d一起使用, 则-s对SET2去重

 

 

 

将文件每行所有不包含在[ a - z ]或[ A - Z ](所有希腊字母)的字符串放在字符串replace-char-list中并转换为一新行。- s选项表明压缩所有新行, - c表明取source-char-list的反义。

 

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
b
Tuesday
wednesday
thurday
Fridya

分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics