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
----------------------
tr -c "[a-zA-Z\n]" "$"<head
命令
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