01. 命令概述
tr命令可以对来自标准输入的字符进行替换、压缩和删除。它可以将一组字符变成另一组字符,经常用来编写优美的单行命令,作用很强大。
tr的英文全称是“ transform ”,即转换的意思。tr他只能从标准输入中读取数据,因此,tr要么将输入文件重定向到标准输入,要么从管道读入数据。
注意:tr类似于sed命令,但是比sed简单,所以tr能实现的功能,sed都能实现。
02. 命令格式
用法:tr [选项]... SET1 [SET2]
03. 常用选项
从标准输入中替换、缩减和/或删除字符,并将结果写到标准输出。
-c, -C, --complement 首先补足SET1
-d, --delete 删除匹配SET1 的内容,并不作替换
-s, --squeeze-repeats 如果匹配于SET1 的字符在输入序列中存在连续的
重复,在替换时会被统一缩为一个字符的长度
-t, --truncate-set1 先将SET1 的长度截为和SET2 相等
--help 显示此帮助信息并退出
--version 显示版本信息并退出
SET 是一组字符串,一般都可按照字面含义理解。解析序列如下:
/NNN 八进制值为NNN 的字符(1 至3 个数位)
// 反斜杠
/a 终端鸣响
/b 退格
/f 换页
/n 换行
/r 回车
/t 水平制表符
/v 垂直制表符
字符1-字符2 从字符1 到字符2 的升序递增过程中经历的所有字符
[字符*] 在SET2 中适用,指定字符会被连续复制直到吻合设置1 的长度
[字符*次数] 对字符执行指定次数的复制,若次数以 0 开头则被视为八进制数
[:alnum:] 所有的字母和数字
[:alpha:] 所有的字母
[:blank:] 所有呈水平排列的空白字符
[:cntrl:] 所有的控制字符
[:digit:] 所有的数字
[:graph:] 所有的可打印字符,不包括空格
[:lower:] 所有的小写字母
[:print:] 所有的可打印字符,包括空格
[:punct:] 所有的标点字符
[:space:] 所有呈水平或垂直排列的空白字符
[:upper:] 所有的大写字母
[:xdigit:] 所有的十六进制数
[=字符=] 所有和指定字符相等的字符
仅在SET1 和SET2 都给出,同时没有-d 选项的时候才会进行替换。
仅在替换时才可能用到-t 选项。如果需要SET2 将被通过在末尾添加原来的末字符的方式
补充到同SET1 等长。SET2 中多余的字符将被省略。只有[:lower:] 和[:upper:]
以升序展开字符;在用于替换时的SET2 中以成对表示大小写转换。-s 作用于SET1,既不
替换也不删除,否则在替换或展开后使用SET2 缩减。
字符范围
指定字符串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
04. 参考示例
4.1 将输入字符由大写转换为小写
[deng@localhost ~]$ echo "HELLO ITCAST" | tr 'A-Z' 'a-z'hello itcast[deng@localhost ~]$
‘A-Z' 和 ‘a-z'都是集合,集合是可以自己制定的,例如:‘ABD-}'、‘bB.,'、‘a-de-h'、‘a-c0-9'都属于集合,集合里可以使用'/n'、'/t',可以可以使用其他ASCII字符。
4.2 删除出现的数字
[deng@localhost ~]$ echo "hello 1234 itcast 7890" | tr -d '0-9'hello itcast [deng@localhost ~]$
4.3 从输入文本中将不在补集中的所有字符删除
[deng@localhost test]$ echo aabbcc..#dd2 */dk4 | tr -d -c '0-9 /n'2 4[deng@localhost test]$
补集中包含了数字0~9、空格和换行符/n,所以没有被删除,其他字符全部被删除了。
4.4 将连续重复的字符以单独一个字符表示
[deng@localhost test]$ echo "helloooooooooo is heimamaaaaaaaaaa" | tr -s 'oa'hello is heimama[deng@localhost test]$
4.5 使用替换操作执行+操作
[deng@localhost test]$ echo 1 2 3 4 5 6 7 8 9 | xargs -n1 | echo $[ $(tr '/n' '+') 0 ]45[deng@localhost test]$
4.6 删除由于Windows文件造成的'^M'字符
[deng@localhost test]$ cat txt | tr -s '/r' '/n' > file[deng@localhost test]$
或者
[deng@localhost test]$ cat txt | tr -d '/r' > file
4.7 将小写字母转换为大写字母
[deng@localhost test]$ echo "hello itcast" | tr '[:lower:]' '[:upper:]'HELLO ITCAST[deng@localhost test]$
4.8 将换行符替换成制表符
[deng@localhost test]$ cat txt | tr '/n' '/t' 1111 1111 2222 2222 5555 [deng@localhost test]$ [deng@localhost test]$
以上Linux tr命令是如何使用的就是小编为大家收集整理的全部内容了,希望对大家有所帮助。如果您喜欢这篇文章,可以收藏或分享给您的小伙伴们吧!欢迎持续关注我们的后续更新。