tr是translate的简写,亦即翻译,但是遗憾的是,它不能翻译句子,只能翻译单个字符。

1 tr的工作原理是什么?

先记住一点,tr命令不接受指定的文件参数,而只是对标准输入进行翻译。好了,记住这点后,我们继续。

tr的命令格式是tr SET1 SET2,凡是在SET1中的字符,都会被替换为SET2中相应位置上的字符,简单吧!

2 举个例子吧!

tr的例子其实都大同小异,看一个最简单的例子:

我们有一个包含了四个人身高的数据文件,名字叫height.txt,它的内容是这样的:

$ cat height.txt

1.79 1.83

1.65 1.59

我们想搞一个恶作剧,将所有人的身高从1米级别都提高到2米级别,呵呵,一个tr就可以搞定。

$ tr 1 2 < height.txt

2.79 2.83

2.65 2.59

希望你没有忘记,tr只处理标准输入,所以我们需要将height.txt通过重定向指到tr的标准输入才可以。

3 我们可以用tr来修改文件中的间隔符么?

Good idea!

当使用cut的时候,通常会被间隔符问题所困扰,我们这个时候可以考虑到tr这个命令。

还是以height.txt文件为例,其中的间隔符是空格,我们把它修改为制表符吧!

$ tr ' ' '\11' < height.txt

1.791.83

1.651.59

这里有一个小知识点,像制表符、换行符这些字符不好表示,我们可以考虑使用ASCII的八进制形式来表示,制表符的八进制形式是11,回车是15,换行是12。而在tr命令中,可以使用\nnn形式表示八进制形式的字符。如果你实在记不住这些编号,那么用\t表示制表符你总该可以记住吧!(\n代表新行,\r代表回车)

这下,你应该可以理解上面那条命令的作用了吧。如果你仍然怀疑,那么,看看下面这条命令,你就该心服口服了:

$ tr ' ' '\11' < height.txt |sed -n l

1.79\t1.83$

1.65\t1.59$

看!空格的的确确被替换成了制表符喽!

4 使用tr能把文章中的小写都转换成大写么?

这个正是tr所擅长的地方。

加入我们拥有一个文件叫做word.txt,里面包含的内容是AbcdE。

那么最简单的替换大小写的方法是:

$ cat word.txt

AbcdE

$ tr 'a-z' 'A-Z' < word.txt

ABCDE

5 [CHAR*]怎么用?

这是 SET2 专用的设定,功能是重复指定的字符到与 SET1 相同长度为止

例子:

$ cat number.txt

1234567890

$ tr '1-5' '[A*]' < number.txt

AAAAA67890

6 [CHAR*REPEAT]怎么用?

这也是SET2专用的设定,功能是将CHAR重复REPEAT次数。其中REPEAT次数可以用八进制数表示,但记得要以0开头表示八进制数。

例子:

$ tr '1-9' '[A*5]BCDE' < number.txt

AAAAABCDE0

7 在tr中还有哪些表示集合的符号呢?

[:alnum:] :所有字母字符与数字

[:alpha:] :所有字母字符

[:blank:] :所有水平空格

[:cntrl:] :所有控制字符

[:digit:] :所有数字

[:graph:] :所有可打印的字符(不包含空格符)

[:lower:] :所有小写字母

[:print:] :所有可打印的字符(包含空格符)

[:punct:] :所有标点字符

[:space:] :所有水平与垂直空格符

[:upper:] :所有大写字母

[:xdigit:] :所有 16 进位制的数字

例子:

将所有的数字都转换为字符x。

$ tr [:alnum:] '[x*]' < number.txt

xxxxxxxxxx

8 tr里面包含SET1和SET2,那如果出现两个集合的大小不同的情况,tr如何处理呢?

这个问题,最好的解决办法就是做实验啊。

第一种情况是SET1>SET2:

$ tr 1-5 AB < number.txt

ABBBB67890

结论一下子就出来了,SET1中多出来的字符都会和SET2中最后一个字符相对应。

第二种情况SET1

$ tr 1-3 ABCDE < number.txt

ABC4567890

很明了,SET2中多余的部分将被抛弃。

9 讲一讲tr命令的-s选项吧!

这个-s选项,是专门针对SET1起作用的,意思是如果发现有连续的SET1里的字符,就把它们缩减为1个。

一个很经典的应用就是把不规律的空格缩减为一个空格:

$ cat spaces.txt

How     are                you?

Fine          Thank   you

$ tr -s ' ' ' ' < spaces.txt

How are you?

Fine Thank you

效果很明显,用户很满意。恩!

10 -d选项咋用?

-d选项是用来删除字符用的。格式是这样的:tr -d charset

$ tr -d ' ' < spaces.txt

How  are  you?

FineThankyou

看,该有的空格都没了…这就是-d的作用,把空格都删除了!

如果你想把文章中的数字都删除,就tr -d [0-9] < filename就可以了。

11 -c选项的神奇

这个参数能删除指定字符外的补集。

root@ubuntu:/test# cat file

a b c 1 2 3 a b c

root@ubuntu:/test# tr -c 'a-z \n' 'x'

a b c x x x a b c

这把把除小写字母,空格,换行符以外的字符替换成x。

注:都可以用sed 来完成。

eval /dev/null 2>&1||head -c 10)

随机生成10个字符串

matlab中tr什么意思,tr命令详解相关推荐

  1. Matlab中plot函数及legend函数详解

    Matlab中plot函数及legend函数详解 Matlab中plot函数及legend函数详解 Matlab中plot函数全功能解析 功能 二维曲线绘图 语法 plot(Y) plot(X1,Y1 ...

  2. Matlab中自带地图绘制WorldMap详解

    Matlab中自带地图绘制WorldMap详解 转载地址:http://blog.csdn.net/archielau/article/details/7933265,其实这些代码是在matlab中的 ...

  3. Linux中sort,uniq,cut,wc命令详解

    Linux中sort,uniq,cut,wc命令详解 来源:hellodev 本文主要对Linux中sort,uniq,cut,wc这4个命令的使用方法进行了详细说明,希望对你有所帮助. sort s ...

  4. linux中date使用方法,linux命令详解date使用方法(计算母亲节和父亲节日期脚本示例)...

    linux命令详解date使用方法(计算母亲节和父亲节日期脚本示例) 发布于 2016-02-07 15:58:40 | 108 次阅读 | 评论: 0 | 来源: 网友投递 LinuxLinux是一 ...

  5. cumsum在matlab中,matlab中cumsum函数和sum函数详解

    调用格式及说明 matlab中cumsum函数通常用于计算一个数组各行的累加值.在matlab的命令窗口中输入doc cumsum或者help cumsum即可获得该函数的帮助信息. 调用格式及说明 ...

  6. 矩阵在Matlab中应用规则,1.3 MATLAB中的矩阵运算免费阅读_详解MATLAB在最优化计算中的应用免费全文_百度阅读...

    4.6 线性规划问题的MATLAB求解方法 与一般的线性规划理论一样,在MATLAB中有线性规划的标准型,和前面介绍的一般标准型有类似之处,也有不同之处.在调用MATLAB线性规划函数linprog时 ...

  7. matlab stem函数坐标轴_在MATLAB中可以设置坐标轴的函数详解

    1.绘制二维曲线的最基本函数plot 2.双纵坐标函数plotyy 3. 坐标控制 函数的调用格式为: axis([xmin xmax ymin ymax zmin zmax]) axis函数功能丰富 ...

  8. Docker配置Dockerfile中关键ENTRYPOINT和CMD命令详解

    一.dockerfile中的 CMD 1.每个dockerfile中只能有一个CMD如果有多个那么只执行最后一个. 2.CMD 相当于启动docker时候后面添加的参数看,举个简单例子: docker ...

  9. 手机中的SIM卡网络命令详解 - USSD代码

    手机中的SIM网络命令, 相当于电脑的cmd或linux中的网络命令行, 可以实现丰富多样的功能.在手机的拨号界面输入以下指令, 就可以实现这些功能. 目录 呼叫转移设置 转接所有来电 无人接听时转接 ...

  10. Linux中Crontab(定时任务)命令详解及使用教程

    Crontab介绍: Linux crontab是用来crontab命令常见于Unix和类Unix的操作系统之中,用于设置周期性被执行的指令.该命令从标准输入设备读取指令,并将其存放于"cr ...

最新文章

  1. openssl+poly1305+sm4实现
  2. 高通---GPUCPU频率和工作模式的获取设置
  3. IO多路复用 select、poll、epoll
  4. vivo9.0系统设备最简单激活XPOSED框架的步骤
  5. PL/SQL编程基本概念
  6. 编程中的蛇形填空问题_PCB—蛇形线的作用,这次真的是把你搞懂了
  7. 福大软工1816 · 第一次作业 - 准备
  8. 成功与不成功并非智商差别:男人,如何唤醒心灵的巨人
  9. 2019款iPhone XR新配色机模上手:就是这个味儿
  10. Ripple(Glance)
  11. switchhost 提示没有权限
  12. 基于matlab人脸识别论文,基于matlab的人脸识别系统设计 毕业论文
  13. Quartus 软内核NIOS II 入门指导
  14. 比较横截面与时间序列的因子模型
  15. RabbitMQ3.10.7高级特性
  16. mysql有to char函数吗_mysql 类似to_char() to_date()函数
  17. Excel统一添加前缀与后缀
  18. 学成在线 第4天 讲义-页面静态化 页面预览
  19. 【算法】独立任务最优调度问题
  20. 如何远程控制另外一台电脑

热门文章

  1. IDEA 点击进入方法内部_Idea中,听说会了Debug,你就离大佬不远了!
  2. android 放大镜动画,Android在图片上进行放大镜效果(放大镜形状)
  3. mysql启动失败2005_数据库2005服务启动不了
  4. 当下,所有工程师都要具备技术变现思考和能力【赢在CSDN】
  5. 微软符号服务器opencv的符号,Opencv Mat类详解和用法1
  6. JDK8 Stream 操作
  7. db h2 数据类型_H2数据库函数及数据类型概述-阿里云开发者社区
  8. python 使用整数编码字符串的值
  9. django Form表单验证
  10. 定期存款可以提前取出来吗_定期存款、约定转存、自动转存和自己取出来转存有什么不同?...