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

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]<test < font="" style="word-wrap: break-word;">

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

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

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


*去掉文件中多余的空行: 

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

或$tr -s ["\n"]<test < font="" style="word-wrap: break-word;">

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

111 

222 


333 



444 

运行之后,标准输出: 

111 

222 

333 

444 

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


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

$tr -s "[\015]" "[\n]"<test < font="" style="word-wrap: break-word;">

或$tr -s "[\r]" "[\n]<test < font="" style="word-wrap: break-word;">

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


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

$tr -s "[:]" "[,]"<test < font="" style="word-wrap: break-word;">

或$tr -s ":" ","<test < font="" style="word-wrap: break-word;">


*显示$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"<trtest < font="" style="word-wrap: break-word;">

输入之后,输出如下: 

kkkkokboykkookk 

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

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

hello 

boy 

good 


*删除set1字符集指定的字符: 

$tr -d bld<trtest < font="" style="word-wrap: break-word;">

或$tr -d [bld]<trtest < font="" style="word-wrap: break-word;">

输入之后,输出如下: 

heo 

oy 

goo 

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

$cat trTest 

hello 

boy 

good 


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

$tr a-z A-Z<testtr < font="" style="word-wrap: break-word;">

或$tr [a-z] [A-z]<testtr < font="" style="word-wrap: break-word;">

输入之后,输出如下: 

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 


原文:http://blog.chinaunix.net/uid-9525959-id-2001634.html

转载于:https://www.cnblogs.com/zclzqbx/p/4687041.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/397767.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

css商品,商品标签例子——CSS3 transform 属性

积累很重要。从此开始记录前端生涯的点滴....div{width:150px;height:30px;background-color:#f83944;/* Rotate div */transform:rotate(-40deg);-ms-transform:rotate(-40deg); /* Internet Explorer */-moz-transform:rotate(-40deg); /* Firefox */-webkit-transform:rotat…

The literal of int xxxxx is out of range

有时候我们定义了long型的变量&#xff0c;当我们给该变量赋值过长的整数时&#xff0c;系统依然会提示长度超过范围&#xff0c;解决办法如下&#xff1a; long timeShow 1437565243495L; 我们需要在整形变量的后面加上“L”&#xff0c;便可以避免系统报错。转载于:https://…

debian 访问 windows 共享_【续】windows环境redis未授权利用方式梳理

01Redis未授权产生原因1.redis绑定在0.0.0.0:6379默认端口&#xff0c;直接暴露在公网&#xff0c;无防火墙进行来源信任防护。2.没有设置密码认证&#xff0c;可以免密远程登录redis服务02漏洞危害1.信息泄露&#xff0c;攻击者可以恶意执行flushall清空数据2.可以通过eval执行…

HTML比较常用的标签

1.全局架构标签&#xff1a;<html><head><title>标题</title><meta charset"utf-8"></head><body>正文部分</body></html><!--注释部分-->2.body标签的属性bgcolor&#xff1a;背景色text:整个网页的颜…

sae项目服务器,基于SAE的游戏服务器: Server on SAE for RGSS Games 部署在SAE上的简易游戏服务器,为用 RMXP/VX/VA 开发的游戏提供网络服务...

本项目已经关闭服务端已经关闭并且不再重启&#xff0c;后续请访问 RGSOS on Gitlab基于SAE的游戏服务器重写服务端逻辑中……暂时无法正常提供服务功能数据库封装封装了 SAE 上的 Memcached&#xff0c;KVDB 和 Storage 到 SAE_IO 类&#xff0c;并引申到两个子类&#xff1a;…

1090 Highest Price in Supply Chain (25)

A supply chain is a network of retailers&#xff08;零售商&#xff09;, distributors&#xff08;经销商&#xff09;, and suppliers&#xff08;供应商&#xff09;-- everyone involved in moving a product from supplier to customer. Starting from one root suppli…

mysql 列数据显示转成行数据显示_Mysql的列修改成行并显示数据的简单实现

创建测试表&#xff1a;DROP TABLE IF EXISTS test;CREATE TABLE test (year int(11) DEFAULT NULL,month int(11) DEFAULT NULL,amount double DEFAULT NULL) ENGINEInnoDB DEFAULT CHARSETutf8;插入数据&#xff1a;INSERT INTO test VALUES (1991, 1, 1.1);INSERT INTO test…

Android两种常见错误(ANR和FC)解决办法

ANR(Activity Not Respone)(无响应)先介绍下Main线程&#xff08;也称为UI线程、主线程&#xff09;功能: 1.创建UI控件2.更新UI控件状态3.事件处理限制&#xff1a;Main线程不建议有超过5秒的事件出现条件&#xff1a;当用户输入事件5s内没有得到响应&#xff0c;将弹出ANR对话…

mysql命令(command)

连接mysql命令: mysql -h 192.168.1.1 -P 3306 -uuserName -pPassword 显示表的索引: SHOW INDDEX FROM table_name 查看mysql的超时时间&#xff1a;SHOW GLOBAL VARIABLES LIKE %timeout% 备份表结构和表数据&#xff1a;mysqldump -u用户名 -p 库名 表1 表2 > xxx.sql只…

微信5.0登录提示服务器繁忙,iOS集成友盟社会化分享微信无法登录?

iOS集成友盟社会化分享SDK-5.0点击微信登录的时候出现无法获取accessToken的现象&#xff0c;其他如QQ、微博都可以正常登录使用。另外QQ、微博和微信分享都可以正常使用。望各位早日帮我解决或者分析一下。谢谢//微信登录之后的回调- (BOOL)application:(UIApplication *)appl…

sql获取某列出现频次最多的值_业务硬核SQL集锦

戳上方蓝字关注我 这两年学会了跑sql&#xff0c;当时有很多同学帮助我精进了这个技能&#xff0c;现在也写成一个小教程&#xff0c;反馈给大家。适用对象&#xff1a;工作中能接触到sql查询平台的业务同学(例如有数据查询权限的产品与运营同学)适用场景&#xff1a;查询hive&…

void ,NULL与0的区别联系

void ,NULL及0的区别联系 void的详解: void的字面意思是“无类型”或“空类型”&#xff0c;void*则为“无针型指针”&#xff0c;那就意味着void*可以指向任何类型的数据。 众所周知&#xff0c;如果指针p1和p2的类型相同&#xff0c;那么我们可以直接在p1和p2间互相赋值&…

python 2 days

1&#xff0c;格式化输出&#xff0c;%s %d 2&#xff0c;复习昨日讲题 编译型&#xff1a; 将代码一次性全部编译成二进制&#xff0c;然后运行。 优点&#xff1a;执行效率高。 缺点&#xff1a;开发效率低&#xff0c;不能跨平台。 C解释型&#xff1a; 代码…

nginx编译安装与配置使用

第一部分----nginx基本应用源码编译安装nginx1、安装pcre软件包&#xff08;使nginx支持http rewrite模块&#xff09;yum install -y pcre yum install -y pcre-devel2、安装openssl-devel&#xff08;使nginx支持ssl&#xff09;yum install -y openssl-devel3、创建用户ngin…

ubuntu+查看服务器文件夹权限,Ubuntu - 文件夹权限查看与修改

Ubuntu 文件的归属身份有四种&#xff1a;u - 拥有文件的用户(所有者)g - 所有者所在的组群o - 其他人(不是所有者或所有者的组群)a - 每个人或全部(u, g, o)1. 查看文件/文件夹权限ls -l filename # 查看文件权限ls -ld folder # 查看文件夹权限输出结果如&#xff1a;drwxrwx…

mysql dump 1449_跨版本mysqldump恢复报错Errno1449

已经有一套主从mysql,新增两个slave主库Server version: 5.6.22-log MySQL Community Server (GPL)旧从库Server version: 5.6.28-log MySQL Community Server (GPL)新增SLAVE 1&#xff1a; Server version: 5.6.22-log MySQL Community Server (GPL)新增SLAVE 2&#xff1a; …

修复 Xcode 错误 “The identity used to sign the executable is no longer valid”

如图&#xff1a; 解决方法来自&#xff1a;http://stackoverflow.com/questions/7088441/the-identity-used-to-sign-the-executable-is-no-longer-valid/14275197 Restarting Xcode didnt work for me. What fixed it for me was going to Accounts in Xcode (in preferences…

centos设置ip

这里是centos7.vmware安装centos后需要设置ip 1.首先查看虚拟机的网络适配器信息 2.根据信息修改配置文件 vi /etc/sysconfig/network-scripts/ifcfg-ens33 图为修改后的,最初的配置为 BOOTPROTOdhcp ONBOOTno IPADDR,GATEWAY,NETMASK没有进行配置需要根据网络适配器配置手动维…

微信支付+服务器+php代码,php 微信支付企业付款(示例代码)

/*** 格式化参数格式化成url参数*/public function ToUrl($arr){$buff "";foreach ($arr as $k > $v){if($k ! "sign" && $v ! "" && !is_array($v)){$buff . $k . "" . $v . "&";}}$buff trim($b…

Spark踩坑记——数据库(Hbase+Mysql)转

转自&#xff1a;http://www.cnblogs.com/xlturing/p/spark.html 前言 在使用Spark Streaming的过程中对于计算产生结果的进行持久化时&#xff0c;我们往往需要操作数据库&#xff0c;去统计或者改变一些值。最近一个实时消费者处理任务&#xff0c;在使用spark streaming进行…