tr可以对来自标准输入的内容进行字符替换、字符删除以及重复字符压缩。它可以将一组字符变成另一组字符,因而通常也被称为转换命令。

1、tr只能通过stdin(标准输入),而无法通过命令行参数来接受输入。它的调用格式如下:

tr [options] set1 set2

将来自stdin的输入字符从set1映射到set2,然后将输出写入stdout(标准输出)。set1和set2是字符类或字符集。如果两个字符集的长度不相等,那么set2会不断重复其最后一个字符,直到长度与set1相同。如果set2的长度大于set1,那么在set2中超出set1长度的那部分字符则会全部被忽略。

2、将输入字符由大写转换为小写,如

$echo "HELLO WHO IS THIS" |tr 'A-Z' 'a-z'

'A-Z'和‘a-z’都是集合。可以按照需要追加字符或字符类来构造自己定制的集合。

定义集合方式:a、“起始字符-终止字符”这种格式就行了;b、如果“起始字符-终止字符”不是一个连续的字符序列,那么它就会被视为包含了3个元素的集合,也就是:起始字符,-,终止字符。

3、工作原理

通过在tr中使用集合的概念,我们可以轻松地将字符从一个集合映射到另一个集合中。如使用tr进行数字加密和解密

eg:$echo 12345 | tr '0-9' '9876543210'

87654

eg:$echo 87654 | tr '9876543210' '0-9'

又如,ROT13是一个著名的加密算法,在该算法中,文本加密和解密都使用同一个函数。它按照字母表排列顺序执行13个字母的转换。用tr进行ROT13加密:

$echo "tr came, tr saw, tr conquered." | tr 'a-zA-Z' 'n-za-mN-ZA-M'

输出ge pnzr,ge fnj,ge pbadhrerq.

对加密后的密文再次使用同样的ROT13函数,

$echo ge pnzr,ge fnj,ge pbadhrerq. |tr tr 'a-zA-Z' 'n-za-mN-ZA-M'

输出tr came, tr saw, tr conquered.

tr 还可以用来将制表符转换成空格:

$ tr '\t' ' ' <file.txt

4、补充内容

a、用tr删除字符

tr有一个选项-d,可以通过指定需要被删除的字符集合,将出现在stdin中的特定字符清除掉:

$cat file.txt | tr -d 'set1'

#只使用set1,不适用set2

如:

$echo "Hello 123 world 456" | tr -d '0-9'

Hello world

#将stdin中的数字删除并打印出来

b、字符集补集

可以利用-c来使用set1的补集

tr -c [set1] [set2]

set1的补集意味着这个集合中包含set1中没有的所有字符。

ru:

echo hello 1 char 2 next 4 | tr -d -c '0-9 \n'

在这里,补集中包含了除数字、空格字符和换行符之外的所有字符。因为指定了-d,所以这些字符全部都被删除。

c、用tr压缩字符

连续的重复字符应该在压缩成单个字符。经常需要从事的一项任务就是压缩空白字符。

tr的-s选项可以压缩输入中重复的字符。用它来巧妙执行加法

$cat sum.txt

1

2

3

4

5

$cat sum.txt | echo $[ $(tr '\n' '+' ) 0 ]

15

在上面的命令中,tr用来将'\n'替换成'+',因此我们得到了字符串"1+2+3+4+5",但是在字符串的尾部多了一个操作符+,故追加一个0.

又如,摒除多余的换行符

$cat multi_blanks.txt |tr -s '\n'

line1

line2

line3

line4

d、字符类

tr可以像使用集合一样使用各种不同的字符类。

alnum:字母和数字

alpha:字母

cntrl:控制(非打印)字符

digit:数字

graph:图形字符

lower:小写字母

print:可打印字符

punct:标点符号

space:空白字符

upper:大写字母

xdigit:十六进制字符

可按照下面的方式选择并使用所需的字符类

tr [ :class: ] [:class:]

如tr '[:lower:]' '[:upper:]'

2.6用tr进行转换的更多相关文章

  1. tr命令-转换和删除字符

    tr 转换和删除字符 支持标准输入 格式 tr [OPTION]...SET1[SET2] Translate, squeeze, and/or delete characters from stan ...

  2. tr 字符转换命令

    tr:可以用来删除一段信息当中的文字,或者是进行文字信息的替换 语法:tr [parameter] set1 ...参数: -d:删除信息当中的set1这个字符 -s:替换掉重复的字符 举例: 将la ...

  3. sed tr 批量转换邮箱格式 去除"\n" 行尾添加";"

    1:从phpmyadmin上拿下来的数据是这样的: 2:od -c 发现存在\r\n (windows上编码问题) $ od -c sql.csv 先将\r处理掉 $ sed 's/\r//' sql ...

  4. linux tr命令实现windows文本格式与linux文本格式间的转换

    tr 命令 转换和删除字符 选项: -d --delete:删除字符 -s --squeeze-repeats:把连续重复的字符以一个字符表示,即去重 -c –C --complement:取字符集的 ...

  5. tr DEMO

    测试数据: [weblogic@etp-mall-dev7][/tmp]$ cat msn.txt aaa bbb bbb ccc ccc ddd bbb eee aaa ccc bbb sss 转换 ...

  6. linux的tr命令

    tr(translate缩写)主要用于删除文件中的控制字符,或进行字符转换. 语法 tr [ -c | -cds | -cs | -C | -Cds | -Cs | -ds | -s] [ -A] S ...

  7. 《linux 字符处理》- grep/sort/uniq/tr/paste

    一:基本 字符处理主要是文本的搜索和处理. 搜索也主要使用到了 管道 作为媒介. 二: grep 搜索文本 基本语法 * grep [-incv] ’文本’ 文件 * i 不区分大小写 * c 匹配行 ...

  8. Linux Shell 文本处理工具集锦--Awk―sed―cut(row-based, column-based),find、grep、xargs、sort、uniq、tr、cut、paste、wc

    本文将介绍Linux下使用Shell处理文本时最常用的工具:find.grep.xargs.sort.uniq.tr.cut.paste.wc.sed.awk:提供的例子和参数都是最常用和最为实用的: ...

  9. linux命令--大小写转换命令

    1.tr命令 tr命令转换小写为大写     cat aa.txt | tr a-z A-Z 或者   cat aa.txt | tr [:lower:] [:upper:]  tr命令大写转换小写  ...

随机推荐

  1. phthon 基础 7.3 logging 日志模块

    一. logging 的使用 日志是我们排查问题的关键利器,写好日志记录,当我们发生问题时,可以快速定位代码范围进行修改.python有给我们开发者提供好的日志模块,下面我们就来介绍一下logging ...

  2. jQuery学习笔记(9)--jquery中的事件--$(document).ready()

    1.$(document).ready()方法是事件模块中最重要的一个函数,可以极大地提高web应用程序的相应速度. 2.执行时机:DOM就绪后就会执行,而javascript中window.onlo ...

  3. 九度OJ 1080:进制转换 (进制转换)

    时间限制:1 秒 内存限制:32 兆 特殊判题:否 提交:4583 解决:1076 题目描述: 将M进制的数X转换为N进制的数输出. 输入: 输入的第一行包括两个整数:M和N(2<=M,N< ...

  4. 3行代码 多元线性方程组 rank=4 多元-一元 降元

    对于线性方程组Ax=b 对A和b执行同样的一串行初等运算, 那么该方程组的解集不发生变化. [未知-已知   高阶--低阶] http://mathworld.wolfram.com/CramersR ...

  5. smartforms 条码打印

    转自:http://blog.csdn.net/zhongguomao/article/details/6759642 SAP 条码打印有 新旧 两种技术方法:1.传统的(旧):将数据发送到打印机上, ...

  6. 改善程序与设计的55个具体做法 day1

    博客好久没更新了,就从这本读书笔记开始吧. 条款01: 视C++为一个语言联邦 C++可视为有四个次语言组成的: 1.C语言 2.Object-Oriented C++ (面向对象C++) 3.Tem ...

  7. loader与plugin,module与chunk,compiler与compilation

    loader将各类型的文件转为webpack能处理的有效模块(module) 插件处理范围更广的任务,例如打包优化.压缩等 module程序的离散功能块,一个文件对应一个module chunk若干m ...

  8. HAOI 2017 游记

    省选 2017年4月23日 流水账式游记,不喜勿喷. Day0: 准备出发,上午敲了一顿板子,板子敲完了就打小游戏,老师也不管了. 过程中各种奶,说什么今年一定考仙人掌啦,今年一定考字符串啦,今年一定 ...

  9. SQL Server 2008R2 代理服务-开启

    ,点击开始菜单-所有程序-SQLServer2008R2-配置工具-SQLServer配置管理器 2,选择SQLServer服务 3,找到SqlServer代理(MSSQLSERVER),双击或右键选 ...

  10. 无法远程连接阿里云的Mysql

    问题描述:昨天使用阿里云安装了Mysql,无法远程连接,排除端口号错误.防火墙.Mysql权限问题后,最后发现是阿里云安全组规则限制问题: 解决方式: 1.访问阿里云控制台,实例-->管理 2. ...