您的位置:首页 > 运维架构 > Linux

Linux tr 命令

2015-08-05 20:35 435 查看
2015-08-03 创建

1、概述

  通过使用 tr,您可以非常容易地实现 sed 的许多最基本功能。您可以将 tr 看作为 sed 的(极其)简化的变体:它可以用一个字符来替换另一个字符,或者可以完全除去一些字符。您也可以用它来除去重复字符。这就是所有 tr 所能够做的。 【这句话是复制的



  转换或者删除字符

2、命令格式

  tr [OPTION]... SET1 [SET2]    SET1 字符串1   SET2 字符串2

3、常用命令参数

  -c, -C, --complement  用字符串1中字符集的补集替换此字符集,要求字符集为ASCII【不清楚

  -d, --delete  不转换字符串1,并删除掉

[oldboy@moban oldboy]$ tr -d ww
qwewwq
qeq
^C

  -s, --squeeze-repeats  删除所有重复出现字符序列,只保留第一个;即将重复出现字符串压缩为一个字符串【】

[oldboy@moban oldboy]$ tr -s 12 AB
qwrds123
qwrdsAB3

12332r23231233312sdfwe12aa12bb
AB33BrB3B3AB333ABsdfweABaaABbb
^C
[oldboy@moban oldboy]$ tr -s 11 BA
q1122
qA22
11vv11bb11nn11mm
AvvAbbAnnAmm
^C
[oldboy@moban oldboy]$
[oldboy@moban oldboy]$ tr -s 12 AA
12bb12aa12rr
AbbAaaArr
^C
[oldboy@moban oldboy]$
  -t, --truncate-set1  将字符串1的长度设置给字符串2 【即字符串2的长度等于字符串1】

[oldboy@moban oldboy]$ tr 123 q
123aa123bb
qqqaaqqqbb
^C
[oldboy@moban oldboy]$
[oldboy@moban oldboy]$ tr 123 qb
123aaa123bb
qbbaaaqbbbb
^C
[oldboy@moban oldboy]$ tr 123 qbaa
123aaa123bbb
qbaaaaqbabbb
^C
[oldboy@moban oldboy]$

  特殊含义的字符

  [:alnum:]    所有的大小写字母和数字

  [:alpha:]    所有大小写字母

  [:blank:]    所有水平空白字符

  [:cntrl:]    所有的控制字符【不知怎么用】

  [:digit:]    所有数字

  [:graph:]    所有可打印的字符,不包含空格

  [:print:]    所有可打印的字符,包含空格

  [:lower:]    所有的小写字母

  [:upper:]    所有的大写字母

  [:punct:]    所有的标点符号【不是数字和字母

[oldboy@moban ~]$ tr [:punct:] q
!@#wr,./?;'::'"\|[]{}
qqqwrqqqqqqqqqqqqqqqq
  [:space:]    所有的水平或者竖直空白字符【所有的空白字符】

  [:xdigit:]    所有的十六进制数字

  其他:

    1、字符范围

  指定字符串1或字符串2的内容时,只能使用单字符或字符串范围或列表。

  [a-z] a-z内的字符组成的字符串。

  [A-Z] A-Z内的字符组成的字符串。

  [0-9] 数字串。

  \octal 一个三位的八进制数,对应有效的ASCII字符。

  [O*n] 表示字符O重复出现指定次数n。因此[O*2]匹配OO的字符串。

    2、  tr中特定控制字符的不同表达方式

速记符含义八进制方式
\a Ctrl-G  铃声\007
\b Ctrl-H  退格符\010
\f Ctrl-L  走行换页\014
\n Ctrl-J  新行\012
\r Ctrl-M  回车\015
\t Ctrl-I  tab键\011
\v Ctrl-X  \030


4、常用示例

  参考:linux tr命令详解

1、将文件file中出现的"abc"替换为"xyz"

# cat file | tr "abc" "xyz" > new_file
【注意】这里,凡是在file中出现的"a"字母,都替换成"x"字母,"b"字母替换为"y"字母,"c"字母替换为"z"字母。而不是将字符串"abc"替换为字符串"xyz"。

 

2、使用tr命令“统一”字母大小写

(小写 --> 大写)

# cat file | tr [a-z] [A-Z] > new_file

(大写 --> 小写)

# cat file | tr [A-Z] [a-z] > new_file

 

3、把文件中的数字0-9替换为a-j 

# cat file | tr [0-9] [a-j] > new_file

4、删除文件file中出现的"Snail"字符

# cat file | tr -d "Snail" > new_file
【注意】这里,凡是在file文件中出现的'S','n','a','i','l'字符都会被删除!而不是紧紧删除出现的"Snail”字符串。

 

5、删除文件file中出现的换行'\n'、制表'\t'字符

# cat file | tr -d "\n\t" > new_file

不可见字符都得用转义字符来表示的,这个都是统一的。

 

6、删除“连续着的”重复字母,只保留第一个

# cat file | tr -s [a-zA-Z] > new_file

 

7、删除空行

# cat file | tr -s "\n" > new_file

 

8、删除Windows文件“造成”的'^M'字符

# cat file | tr -d "\r" > new_file

或者

# cat file | tr -s "\r" "\n" > new_file

【注意】这里-s后面是两个参数"\r"和"\n",用后者替换前者

 

9、用空格符\040替换制表符\011

# cat file | tr -s "\011" "\040" > new_file

 

10、把路径变量中的冒号":",替换成换行符"\n"

# echo $PATH | tr -s ":" "\n"

5、命令所在位置和类型

[oldboy@moban ~]$ which tr
/usr/bin/tr
[oldboy@moban ~]$ type tr
tr is hashed (/usr/bin/tr)
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: