Linux命令学习手册-tr

tr [OPTION]... SET1 [SET2]

功能

转换或者删除字符。

描述

tr 指令从标准输入设备读取数据,经过字符串转译后,输出到标准输出设备。

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

tr 用来从标准输入中通过替换或删除操作进行字符转换。 tr 主要用于删除文件中控制字符或进行字符转换。使用 tr 时要转换两个字符串:字符串1用于查询,字符串2用于处理各种转换。 tr 刚执行时,字符串1中的字符被映射到字符串2中的字符,然后转换操作开始。

参数:

  • -c--complerment 取代所有不属于第一字符集的字符。
  • -d--delete 删除所有属于第一字符集的字符。
  • -s--squeeze-repeats 把连续重复的字符以单独一个字符表示。
  • -t--truncate-set1 这个比较难理解, man 上面的解释是: first truncate SET1 to length of SET2,经过我的实践发现,将 set1 的字符依次替换成 set2 中的字符,如果 set1 中的字符数目超过 set2 ,那么 set1 多出的字符忽略。如果没有 -t ,那么多出的字符都替换成 set2 的最后一个字符。
  • --help 在线帮助。
  • --version 显示版本信息。

字符范围

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

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

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

  • [0-9] 数字串。

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

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

    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

举例

压缩文件test内容中重复的字符为一个

$tr -s [a-z]

这样,会把文件中每一行的, Set1([a-z]) 字符串中的重复字符压缩为一个,并把处理的结果打印到标准输出,原来的文件不变。

注意这里, set1 集合(也就是第一个参数 [a-z] )中指定的是字符集合,而不是字符串,所以这里做的是把单个字符的重复给压缩为一个,而不是字符串重复。

例如 test 有一行是 tttt.tgz ,那么会变成 t.tgz ,但是 hellohellohello 会变成 helohelohelo.

去掉文件中多余的空行

$tr -s "[\012]" < test

$tr -s ["\n"]

这里,假设原来文件 test 的内容是:

111 
222 

333 


444

运行之后,标准输出:

111 
222 
333 
444

而原来文件的内容不会改变。

删除文件中的 ^M ,并代之以换行

$tr -s "[\015]" "[\n]"

$tr -s "[\r]" "[\n]

一般来说, windows 上面编辑的文件拿到 linux 上面来没行的结尾可以会有这样的符号,实际上直接 cat 也看不出 ^M 符号。

替换文件 test 中所有冒号,代之以逗号

$tr -s "[:]" "[,]"

$tr -s ":" ","

显示 $PATH 变量将 : 变成回车

$echo $PATH | tr ":" "\n"

这里,用 echo $PATH 或者 echo $LD_LIBRARY_PATH 等类似的命令来显示路径信息的话,我们看到的将会是一大堆用冒号连接在一起的路径, tr 命令可以把这些冒号转换为回车,这样,这些路径就具有很好的可读性了.

以上命令在 vi 中进行处理

1,$!tr -s ":" ","

这样,会直接修改 vi 编辑的文件,可以在 vi 内使用所有这些命令!

只要记住:在 tr 命令前要加上您希望处理的行范围和感叹号 ( ),如

1,$!tr -d '\t'

这里,美元符号表示最后一行。

替换第一个参数字符集之外的字符为指定字符

tr -c [boy] "k"

输入之后,输出如下:

kkkkokboykkookk

这里,会把属于第一个参数的字符集中的字符之外的所有,都替换成第二个参数对应的字符。第二个参数必须是单个字符,如果是多个字符,则取最后一个,例如 ka 等价于 a .

使用 cat trTest 查看文件的内容如下:

hello 
boy 
good

删除 set1 字符集指定的字符

$tr -d bld

$tr -d [bld]

输入之后,输出如下:

heo 
oy 
goo

这样,会删除 trTest 文件中的所有 bld 三个字符。这里使用 cat 查看 trTest 文件内容如下:

$cat trTest 
hello 
boy 
good

把文件中的小写字符转换成大写的

$tr a-z A-Z

$tr [a-z] [A-z]

输入之后,输出如下:

111 
222 
HELLO

这里, testTr 内容如下:

111 
222 
hello

使用 -t 替换字符, set1 超出 set2 的部分忽略

$tr -t hld boy < trTest

输入之后,输出如下:

beooo 
boy 
gooy

这样,会依次把 h , l , d 替换成 b , o , y 如果是 hldg 那么多出来的字符 g 忽略,如果没有 -t 那么多出来的所有字符被替换成 boy 的最后一个字符 y

这里 trTest 文件的内容:

$cat trTest 
hello 
boy 
good
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 159,117评论 4 362
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 67,328评论 1 293
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 108,839评论 0 243
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 44,007评论 0 206
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 52,384评论 3 287
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 40,629评论 1 219
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 31,880评论 2 313
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 30,593评论 0 198
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 34,313评论 1 243
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 30,575评论 2 246
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 32,066评论 1 260
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 28,392评论 2 253
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 33,052评论 3 236
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 26,082评论 0 8
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 26,844评论 0 195
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 35,662评论 2 274
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 35,575评论 2 270

推荐阅读更多精彩内容

  • Linux tr 命令用于转换或删除文件中的字符。 tr 指令从标准输入设备读取数据,经过字符串转译后,将结果输出...
    姜淑均阅读 1,149评论 0 1
  • df -h | tr -s ' ' | cut -f5 -d' ' 命令简介: 通过使用tr,您可以非常容易地实现...
    西华子阅读 457评论 0 0
  • list:1.输入、输出重定向;2.tr 转换或删除字符;3. | 管道;4.tee 重定向到多个目标; 5.rz...
    溪云初起日沉阁l阅读 488评论 0 2
  • cat命令 很多时候我们通过cat命令来查看文件内容,它会将文件的所有内容显示出来。当然,cat也可以通过管道接收...
    keysaim阅读 849评论 0 1
  • 官网 中文版本 好的网站 Content-type: text/htmlBASH Section: User ...
    不排版阅读 4,310评论 0 5