2.6用tr进行转换
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进行转换的更多相关文章
- tr命令-转换和删除字符
tr 转换和删除字符 支持标准输入 格式 tr [OPTION]...SET1[SET2] Translate, squeeze, and/or delete characters from stan ...
- tr 字符转换命令
tr:可以用来删除一段信息当中的文字,或者是进行文字信息的替换 语法:tr [parameter] set1 ...参数: -d:删除信息当中的set1这个字符 -s:替换掉重复的字符 举例: 将la ...
- sed tr 批量转换邮箱格式 去除"\n" 行尾添加";"
1:从phpmyadmin上拿下来的数据是这样的: 2:od -c 发现存在\r\n (windows上编码问题) $ od -c sql.csv 先将\r处理掉 $ sed 's/\r//' sql ...
- linux tr命令实现windows文本格式与linux文本格式间的转换
tr 命令 转换和删除字符 选项: -d --delete:删除字符 -s --squeeze-repeats:把连续重复的字符以一个字符表示,即去重 -c –C --complement:取字符集的 ...
- tr DEMO
测试数据: [weblogic@etp-mall-dev7][/tmp]$ cat msn.txt aaa bbb bbb ccc ccc ddd bbb eee aaa ccc bbb sss 转换 ...
- linux的tr命令
tr(translate缩写)主要用于删除文件中的控制字符,或进行字符转换. 语法 tr [ -c | -cds | -cs | -C | -Cds | -Cs | -ds | -s] [ -A] S ...
- 《linux 字符处理》- grep/sort/uniq/tr/paste
一:基本 字符处理主要是文本的搜索和处理. 搜索也主要使用到了 管道 作为媒介. 二: grep 搜索文本 基本语法 * grep [-incv] ’文本’ 文件 * i 不区分大小写 * c 匹配行 ...
- 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:提供的例子和参数都是最常用和最为实用的: ...
- linux命令--大小写转换命令
1.tr命令 tr命令转换小写为大写 cat aa.txt | tr a-z A-Z 或者 cat aa.txt | tr [:lower:] [:upper:] tr命令大写转换小写 ...
随机推荐
- 九度OJ 1150:Counterfeit Dollar(假美元) (分析、检验)
时间限制:1 秒 内存限制:32 兆 特殊判题:否 提交:485 解决:215 题目描述: Sally Jones has a dozen Voyageur silver dollars. Howev ...
- maven依赖本地非repository中的jar包【转】
今天在使用maven编译打包一个web应用的时候,碰到一个问题: 项目在开发是引入了依赖jar包,放在了WEB-INF/lib目录下,并通过buildpath中将web libariary导入. 在e ...
- cordova 实现拨打电话-只需两步(H5)
cordova 实现拨打电话: 第一步配置conf.xml在cordova中所有的URL Schemes 都是服从于白名单的,所以a tel 在这无法正常使用.解决方法是在项目config.xml中添 ...
- ExtJS教程(5)---Ext.data.Model之高级应用
版权声明:本文为博主原创文章,未经博主同意不得转载. https://blog.csdn.net/jaune161/article/details/37391399 1.Model的数据验证 这里借助 ...
- react-navigation遇到的坑
关于goBack返回指定页面 react-navigation是提供了goBack()到指定页面的方法的,那就是在goBack()中添加一个参数,但当你使用goBack('Main')的时候,你会发现 ...
- 用JAVA 的for循环输出 菱形
public class For{ public static void main(String[] args){ //首先.把菱形看成上下两部分,上五下四,所以,第一个for循环有5次,第二个for ...
- hadoop磁盘空间不均衡的解决办法
hadoop集群在运行一段时间后,总是会出现某台机器的磁盘使用率特别高,有的使用率特别低,针对这种情况,hadoop提供了balancer工具调整磁盘负载 使用命令:start-balancer.sh ...
- POJ - 3984 迷宫问题 【BFS】
题目链接 http://poj.org/problem?id=3984 思路 因为要找最短路 用BFS 而且 每一次 往下一层搜 要记录当前状态 之前走的步的坐标 最后 找到最短路后 输出坐标就可以了 ...
- UVA11077 Find the Permutations —— 置换、第一类斯特林数
题目链接:https://vjudge.net/problem/UVA-11077 题意: 问n的全排列中多有少个至少需要交换k次才能变成{1,2,3……n}. 题解: 1.根据过程的互逆性,可直接求 ...
- Android窗口系统第一篇---Window的类型与Z-Order确定
Android的窗口系统是UI架构很重要的一部分,数据结构比较多,细节比较多.本篇文章主要介绍窗口相关数据结构和抽象概念理解,关于[窗口部分的博客]计划如下. 1.窗口Z-Order的管理 2.应用程 ...