什么是tr命令?tr,translate的简写,translate的翻译:

[trænsˈleit]

vi. 翻译, 能被译出

vt. 翻译, 解释, 转化, 转变为, 调动

在这里用到的意思是转化,转变,转换,在linux下输入tr --help查看一下提示:
amosli@amosli-pc:~$ tr --help
Usage: tr [OPTION]... SE××× [SET2]
Translate, squeeze, and/or delete characters from standard input,
writing to standard output.

-c, -C, --complement use the complement of SE×××
-d, --delete delete characters in SE×××, do not translate
-s, --squeeze-repeats replace each input sequence of a repeated character
that is listed in SE××× with a single occurrence
of that character
-t, --truncate-set1 first truncate SE××× to length of SET2
--help display this help and exit
--version output version information and exit

SETs are specified as strings of characters. Most represent themselves.
Interpreted sequences are:

\NNN character with octal value NNN (1 to 3 octal digits)
\ backslash
\a audible BEL
\b backspace
\f form feed
\n new line
\r return
\t horizontal tab
\v vertical tab
CHAR1-CHAR2 all characters from CHAR1 to CHAR2 in ascending order
[CHAR] in SET2, copies of CHAR until length of SE×××
[CHAR
REPEAT] REPEAT copies of CHAR, REPEAT octal if starting with 0
[:alnum:] all letters and digits
[:alpha:] all letters
[:blank:] all horizontal whitespace
[:cntrl:] all control characters
[:digit:] all digits
[:graph:] all printable characters, not including space
[:lower:] all lower case letters
[:print:] all printable characters, including space
[:punct:] all punctuation characters
[:space:] all horizontal or vertical whitespace
[:upper:] all upper case letters
[:xdigit:] all hexadecimal digits
[=CHAR=] all characters which are equivalent to CHAR

Translation occurs if -d is not given and both SE××× and SET2 appear.
-t may be used only when translating. SET2 is extended to length of
SE××× by repeating its last character as necessary. Excess characters
of SET2 are ignored. Only [:lower:] and [:upper:] are guaranteed to
expand in ascending order; used in SET2 while translating, they may
only be used in pairs to specify case conversion. -s uses SE××× if not
translating nor deleting; else squeezing uses SET2 and occurs after
translation or deletion.
全是英文?翻译过来看下:
tr [选项]… 集合1 [集合2]

选项说明:

-c, -C, –complement 用集合1中的字符串替换,要求字符集为ASCII。

-d, –delete 删除集合1中的字符而不是转换

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

-t, –truncate-set1 先删除第一字符集较第二字符集多出的字符

字符集合的范围:

\NNN 八进制值的字符 NNN (1 to 3 为八进制值的字符)
\ 反斜杠
\a Ctrl-G 铃声
\b Ctrl-H 退格符
\f Ctrl-L 走行换页
\n Ctrl-J 新行
\r Ctrl-M 回车
\t Ctrl-I tab键
\v Ctrl-X 水平制表符
CHAR1-CHAR2 从CHAR1 到 CHAR2的所有字符按照ASCII字符的顺序
[CHAR] in SET2, copies of CHAR until length of SE×××
[CHAR
REPEAT] REPEAT copies of CHAR, REPEAT octal if starting with 0
[:alnum:] 所有的字母和数字
[:alpha:] 所有字母
[:blank:] 水平制表符,空白等
[:cntrl:] 所有控制字符
[:digit:] 所有的数字
[:graph:] 所有可打印字符,不包括空格
[:lower:] 所有的小写字符
[:print:] 所有可打印字符,包括空格
[:punct:] 所有的标点字符
[:space:] 所有的横向或纵向的空白
[:upper:] 所有大写字母
tr用来从标准输入中通过替换或删除操作进行字符转换。tr主要用于删除文件中控制字符或进行字符转换。使用tr时要转换两个字符串:字符串1用于查询,字符串2用于处理各种转换。tr刚执行时,字符串1中的字符被映射到字符串2中的字符,然后转换操作开始。

通过使用 tr,您可以非常容易地实现 sed 的许多最基本功能。您可以将 tr 看作为 sed 的(极其)简化的变体:它可以用一个字符来替换另一个字符,或者可以完全除去一些字符。您也可以用它来除去重复字符。这就是所有 tr 所能够做的。
1、带有最常用选项的tr命令格式为
1
tr -c -d -s ["string1_to_translate_from"] ["string2_to_translate_to"] < input-file
这里:

-c 用字符串1中字符集的补集替换此字符集,要求字符集为ASCII。
-d 删除字符串1中所有输入字符。
-s 删除所有重复出现字符序列,只保留第一个;即将重复出现字符串压缩为一个字符串。
input-file是转换文件名。虽然可以使用其他格式输入,但这种格式最常用。
2、字符范围
指定字符串1或字符串2的内容时,只能使用单字符或字符串范围或列表。
[a-z] a-z内的字符组成的字符串。
[A-Z] A-Z内的字符组成的字符串。
[0-9] 数字串。
\octal 一个三位的八进制数,对应有效的ASCII字符。
[On] 表示字符O重复出现指定次数n。因此[O2]匹配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
实例:
1、将文件file中出现的"abc"替换为"xyz"
[root@Gin scripts]# cat t.txt
abc
[root@Gin scripts]# cat t.txt |tr "abc" "xyz"
xyz
[root@Gin scripts]# cat t.txt
abc
【注意】这里,凡是在t.txt文件中出现的"a"字母,都替换成"x"字母,"b"字母替换为"y"字母,"c"字母替换为"z"字母。而不是将字符串"abc"替换为字符串"xyz"。这里的替换不修改源文件
2、使用tr命令“统一”字母大小写
[root@Gin scripts]# cat file
abc
[root@Gin scripts]# cat file|tr [a-z] [A-Z]
ABC
大写转小写只需要把tr后面的参数换个位置即可!

3、把文件中的数字0-9替换为a-j
[root@Gin scripts]# cat file|tr [0-9] [a-j]
abcdefghij
4、删除文件file中出现的"Snail"字符
[root@Gin scripts]# cat file
what is Snail
[root@Gin scripts]# cat file|tr -d "Snail"
wht s
[root@Gin scripts]# cat file
what is Snail
【注意】这里,凡是在file文件中出现的'S','n','a','i','l'字符都会被删除!而不是紧紧删除出现的"Snail”字符串。
5、删除文件file中出现的换行'\n'、制表'\t'字符

cat file | tr -d "\n\t"

不可见字符都得用转义字符来表示的,这个都是统一的。
7、删除空行

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

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

cat file | tr -d "\r"

或者

cat file | tr -s "\r" "\n"

【注意】这里-s后面是两个参数"\r"和"\n",用后者替换前者
9、用空格符\040替换制表符\011

cat file | tr -s "\011" "\040"

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

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

实际应用1,加密解密:
[root@Gin scripts]# echo 12345|tr '0-9' '987654321' ## 加密
87654
[root@Gin scripts]# echo 87654|tr '987654321' '0-9' ## 解密
12345
上面是一个非常有趣的小例子,通过映射来实现简单的加密解密,看懂这个例子,可以接着往下看古罗马时期发明的凯撒加密的一种变体RO×××3
[root@Gin scripts]# echo "hi,this is amosli" | tr 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz' 'NOPQRSTUVWXYZABCDEFGHIJKLMnopqrstuvwxyzabcdefghijklm'
uv,guvf vf nzbfyv
[root@Gin scripts]# echo "uv,guvf vf nzbfyv" | tr 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz' 'NOPQRSTUVWXYZABCDEFGHIJKLMnopqrstuvwxyzabcdefghijklm'
hi,this is amosli
RO×××3是它自己本身的逆反;也就是说,要还原RO×××3,套用加密同样的算法即可得,故同样的操作可用再加密与解密。非常神奇!

实际应用2,字符集补集:
tr -c [set1] [set2]
set1的补集意味着从这个集合中包含set1中没有的所有字符。最典型的用法就是从输入文本中将不在补集中的所有字符全部删除。例如:
[root@Gin scripts]# echo "hello 123 world " | tr -d -c '0-9 \n'
123
在这里,补集中包含了除数字、空格字符和换行符之外的所有字符,因为指定了-d,所以这些字符全部都会被删除。

实际应用3,用tr压缩字符:
[root@Gin scripts]# echo "GNU is not UNIX . Recursicve right?" | tr -s ' '
GNU is not UNIX . Recursicve right?
使用-s参数可以压缩字符串中重复的字符。看另一个例子:
[root@Gin scripts]# cat sum.txt
5
4
3
5
4
3
[root@Gin scripts]# cat sum.txt|echo $[ $(tr '\n' '+') 0 ]
24
[root@Gin scripts]# cat sum.txt|echo $[ $(tr '\n' '+') ]
-bash: 5+4+3+5+4+3+ : syntax error: operand expected (error token is "+ ")
这里,运用tr实现了加法运算, tr '\n' '+'使用换行符来替换为'+'然后连接起来,最后多出来一个'+'再接上数字0即实现了加法。

转载于:https://blog.51cto.com/13508525/2287946

linux命令总结之tr命令相关推荐

  1. Linux命令学习手册-tr命令 2015-07-26 20:35 9人阅读 评论(0) 收藏...

    tr [OPTION]... SET1 [SET2] [功能] 转换或者删除字符. [描述] tr指令从标准输入设备读取数据,经过字符串转译后,输出到标准输出设备. 通过使用 tr,您可以非常容易地实 ...

  2. linux tr 命令_在Linux中使用tr命令玩角色

    linux tr 命令 tr command in Linux translates one set of characters to another. It can replace a charac ...

  3. 【转帖】Linux Cut 命令 与 Paste命令Join命令tr命令

    Cut命令 ,主要用来提取各种各样的数据. cut -cchars file 如:     -c5     提取第5个字符         -c5-    提取第5个字符以后的字符         - ...

  4. linux tr,Linux Tr命令与示例

    Tr是Linux和Unix系统中的命令行实用程序,可转换,删除和压缩标准输入中的字符,并将结果写入标准输出. tr命令通常通过管道与其他命令结合使用,并且可以执行诸如删除重复字符,将大写转换为小写以及 ...

  5. linux tr 变量大小写,使用tr命令快速达到大小写互换——深圳培训linux

    本文,主要讲的是Linux利用tr命令轻松实现大小写转换,深圳培训linux希望通过本文的学习,大家都能实现利用tr命令轻松实现大小写转换.系统工程师有时候在系统维护的时候,需要将某个文件中的内容进行 ...

  6. 【Linux】一步一步学Linux——tr命令(55)

    00. 目录 文章目录 00. 目录 01. 命令概述 02. 命令格式 03. 常用选项 04. 参考示例 05. 附录 01. 命令概述 tr命令可以对来自标准输入的字符进行替换.压缩和删除.它可 ...

  7. linux tr命令完整,linux tr命令详解

    tr命令可以对来自标准输入的字符进行替换.压缩和删除.下面由学习啦小编为大家整理了linux tr命令的相关知识,希望对大家有帮助! linux tr命令用途 tr命令可以对来自标准输入的字符进行替换 ...

  8. Linux文本处理tr命令笔记

    Linux下的tr命令主要是用于文本的转换和删除功能. 新建一个文本文件,test.txt内容如下: today IS Saturday tommow is Sumday my name is xia ...

  9. Linux之tr命令

    将字符进行替换压缩和删除,tr命令 可以对来自标准输入的字符进行替换.压缩和删除.它可以将一组字符变成另一组字符,经常用来编写优美的单行命令,作用很强大. 命令语法 tr [选项] [字符串1] [字 ...

最新文章

  1. Offer是否具有法律效力?
  2. 测试SAP云平台上的Redis数据库服务
  3. 5月学习总结(Ant-Design,mustache,require.js,grunt)
  4. Centos下载地址
  5. Flink 报错 No TaskExecutor registered under container_xx
  6. 客户端之H5拉起第三方app并跳转到指定页面
  7. gif透明背景动画_用“万彩动画大师”点亮你的微课
  8. Kubernetes Secrets 详解
  9. 企业为什么需要BI报表工具?
  10. 精选Java必看200道面试题
  11. 单精度(float) 双精度 (double) 区别
  12. Oracle latch: cache buffers chains
  13. PSPICE-AA灵敏度分析
  14. 表述openfeign的实现原理
  15. 【Football】2022年2月10日
  16. GitHub - polaris-gslb/polaris-gslb: A free, open source GSLB (Global Server Load Balancing) solution
  17. 【可解释】|深层网络的公理化属性(Axiomatic Attribution for Deep Networks)
  18. youdao词典在linux ubuntu安装(dpkg安装缺少依赖包)及删除
  19. 评测 骁龙888plus和麒麟9000哪个好
  20. 基于LAMP的网站搭建介绍

热门文章

  1. linux mask 特殊权限位,Linux 特殊权限
  2. java中三种方法_Java文件I/O的三种方法
  3. HTML5 classList 操作类名
  4. c语言程序年月日怎么编,C语言程序设计: 输入年月日 然后输出是星期几
  5. python递归查找值返回_python – 从树递归中返回值列表
  6. php文档头,头部文档(header.php)
  7. 20200720:每日一题之两数之和Ⅱ(leetcode167)
  8. 20190818:(leetcode习题)反转字符串整数反转
  9. android 自动打包工具,AutopackingAndroid
  10. 蚂蚁爬绳问题 java_趣味数学网