欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

一天一个shell_1_tr

程序员文章站 2024-02-23 14:14:58
...

 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


[email protected]:~$ tr -cs "[a-z][A-Z]" "\n" < diray.txt 
mondy
all
b
Tuesday
wednesday
thurday
Fridya