linux常用命令:tr 命令
tr 命令实现字符转换功能,其功能类似于 sed 命令,但是,tr 命令比 sed 命令简单。也就是说,tr 命令能实现的功能,sed 命令都可以实现。尽管如此,tr 命令依然是 Linux 系统下处理文本的常用命令。
1.命令格式:
tr [选项]... SET1 SET2
2.命令功能:
从标准输入中替换、缩减和/或删除字符,并将结果写到标准输出。
3.常用参数:
-c, -C, --complement 用集合1中的字符串替换,要求字符集为ASCII。
-d, --delete 删除匹配S ET1 的内容,并不作替换
-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 缩减。
4.常用格式:
tr -c -d -s ["string1_to_translate_from"] ["string2_to_translate_to"] < input-file这里:
- -c 用字符串1中字符集的补集替换此字符集,要求字符集为ASCII。
- -d 删除字符串1中所有输入字符。
- -s 删除所有重复出现字符序列,只保留第一个;即将重复出现字符串压缩为一个字符串。
- input-file是转换文件名。虽然可以使用其他格式输入,但这种格式最常用。
字符范围:
- 指定字符串1或字符串2的内容时,只能使用单字符或字符串范围或列表。
- [a-z] a-z内的字符组成的字符串。
- [A-Z] A-Z内的字符组成的字符串。
- [0-9] 数字串。
- \octal 一个三位的八进制数,对应有效的ASCII字符。
- [O*n] 表示字符O重复出现指定次数n。因此[O*2]匹配OO的字符串。
5.常用示例:
示例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]# -] [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"
示例6:删除空行
# cat file | tr -s "\n" > new_file
示例7:删除Windows文件“造成”的'^M'字符
# cat file | tr -d "\r" 或者 # cat file | tr -s "\r" "\n"
【注意】这里-s后面是两个参数"\r"和"\n",用后者替换前者
示例8:用空格符\040替换制表符\011
# cat file | tr -s "\011" "\040"
示例9:把路径变量中的冒号":",替换成换行符"\n"
# echo $PATH | tr -s ":" "\n"
示例10:实际应用1,加密解密:
[root@Gin scripts]# |' ## 加密 [root@Gin scripts]# |' '0-9' ## 解密
上面是一个非常有趣的小例子,通过映射来实现简单的加密解密,看懂这个例子,可以接着往下看古罗马时期发明的凯撒加密的一种变体ROT13
[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
ROT13是它自己本身的逆反;也就是说,要还原ROT13,套用加密同样的算法即可得,故同样的操作可用再加密与解密。非常神奇!
示例11:实际应用2,字符集补集:
tr -c [set1] [set2]
set1的补集意味着从这个集合中包含set1中没有的所有字符。最典型的用法就是从输入文本中将不在补集中的所有字符全部删除。例如:
[root@Gin scripts]# echo "hello 123 world " | tr -d -c '0-9 \n'
在这里,补集中包含了除数字、空格字符和换行符之外的所有字符,因为指定了-d,所以这些字符全部都会被删除。
示例12:实际应用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 [root@Gin scripts]# ] [root@Gin scripts]# cat sum.txt|echo $[ $(tr '\n' '+') ] -bash: ++++++ : syntax error: operand expected (error token is "+ ")
这里,运用tr实现了加法运算, tr '\n' '+'使用换行符来替换为'+'然后连接起来,最后多出来一个'+'再接上数字0即实现了加法。
6.总结
有一个误区很容易被误理解成SET1,SET2是一个字符组合,其实不是这样的;SET1和SET2里面都是值的单个字符之间的替换,比如'ab'不要把ab理解成一个组合,tr还有很多的巧妙的用法这需要多去实践。
linux常用命令:tr 命令的更多相关文章
- 【Linux基础】tr命令替换和删除字符
1.tr命令 tr可以对来自标准输入的字符进行替换.压缩和删除,可以将一组字符变成另外一组字符.通过使用 tr,您可以非常容易地实现 sed 的许多最基本功能.您可以将 tr 看作为 sed 的(极其 ...
- ## 本篇文章对linux常用的一些命令做一下总结,如有需要补充以及不懂得地方,请在下方留言 适合于linux初学者,以及对命令掌握不牢的用来备忘
本篇文章对linux常用的一些命令做一下总结,如有需要补充以及不懂得地方,请在下方留言 适合于linux初学者,以及对命令掌握不牢的用来备忘一,磁盘管理1.显示当前目录位置 pwd2.切换目录 cd ...
- Linux 常用的压缩命令有 gzip 和 zip
Linux 常用的压缩命令有 gzip 和 zip,两种压缩包的结尾不同:zip 压缩的后文件是 *.zip ,而 gzip 压缩后的文件 *.gz 相应的解压缩命令则是 gunzip 和 unzip ...
- LINUX常用配置及命令
一. Fedora系统配置 1. [设置网卡IP] 步骤如下: 1) 用root用户登陆,打开/etc/sysconfig/network-scripts/ifcfg-eth0文 ...
- Linux常用的基础命令总结
man 查看英文命令帮助 可以看作--help 拷贝目录的命令cp -a 包含所有 ls -a 显示所有文件包括隐藏文件 -ld ls -F 过滤目录文件(给不同类型文件结尾加上不同的符号) ...
- linux系统之tr命令
tr命令介绍以及使用 目录: 1.tr命令的介绍 2.tr命令格式 3tr命令使用项. 4.常见的tr命令的使用 tr命令介绍 从标准输入中翻译.压缩和/或删除字符,写入标准输出,说白了就转换和删除字 ...
- Java线上问题排查思路及Linux常用问题分析命令学习
前言 之前线上有过一两次OOM的问题,但是每次定位问题都有点手足无措的感觉,刚好利用星期天,以测试环境为模版来学习一下Linux常用的几个排查问题的命令. 也可以帮助自己在以后的工作中快速的排查线上问 ...
- linux常用60条命令 转
Linux必学的60个命令 Linux提供了大量的命令,利用它可以有效地完成大量的工作,如磁盘操作.文件存取.目录操作.进程管理.文件权限设定等.所以,在Linux系统上工作离不开使用系统提供的命 ...
- 入门学习Linux常用必会命令实例详解
Linux提供了大量的命令,利用它可以有效地完成大量的工作,如磁盘操作.文件存取.目录操作.进程管理.文件权限设定等.所以,在Linux系统上工作离不开使用系统提供的命令.要想真正理解Linux系统, ...
- 网络编程学习笔记-linux常用的网络命令
网络参数设置命令 所有时刻如果你想要做好自己的网络参数设置,包括IP参数.路由参数和无线网络等,就得要了解下面这些相关的命令才行.其中Route及ip这两条命令是比较重要的.当然,比较早期的用法,我们 ...
随机推荐
- 【CF840C】On the Bench DP
[CF840C]On the Bench 题意:给你一个长度为n的数组{ai},定义一个1到n的排列是合法的,当且仅当对于$1\le i <n$,$a_i\times a_{i+1}$不是完全平 ...
- [工具] CintaNotes
CintaNotes是一款非常轻巧实用的笔记软件,可看作EverNote轻量级替代品.CintaNotes只需1个exe,体积仅1MB,却拥有 EverNote易于收集.实时搜索.条状排列.tag分类 ...
- (转)关于如何学好游戏3D引擎编程的一些经验
此篇文章献给那些为了游戏编程不怕困难的热血青年,它的神秘要我永远不间断的去挑战自我,超越自我,这样才能攀登到游戏技术的最高峰 ——阿哲VS自己 QQ79134054多希望大家一起交流与沟通 这篇文章是 ...
- html css的内联样式 内部样式表 外部样式表的优先级
http://www.w3school.com.cn/html/html_css.asp 这三种样式是有优先级的,记住他们的优先级:内联式 > 嵌入式 > 外部式,但是嵌入式>外部式 ...
- iOS - 开源框架、项目和学习资料汇总(UI篇)
上下拉刷新控件 1. MJRefresh --仅需一行代码就可以为UITableView或者CollectionView加上下拉刷新或者上拉刷新功能.可以自定义上下拉刷新的文字说明.(推荐)2. SV ...
- R生存分析AFT
γ = 1/scale =1/0.902 α = exp(−(Intercept)γ)=exp(-(7.111)*γ) > library(survival) > myfit=survre ...
- 【vue】---项目接口管理---【巷子】
一.前言 在vue开发中,会涉及到很多接口的处理,当项目足够大时,就需要定义规范统一的接口 假设后端的文档分成了以下几个模块 1.发现模块 2.个人信息模块 3.商品模块 4.评论模块 ...... ...
- confirm
注意confirm是window对象的方法,当确认时,返回true,取消时,返回false
- Spring接受前台的数据超过256出现如下异常:
转载自:http://blog.csdn.net/dracotianlong/article/details/47604723 Spring接受前台的数据超过256出现如下异常: org.spring ...
- Git 使用篇二:搭建远程服务器
一般做一个私人的项目,不希望开源的,是不会放在GitHub上的,这个时候我们需要建里一个自己的Git远程服务器,方便小组成员开发. 这里以Centos云服务器为例: 第一步 如果自己的服务器没有git ...