美文网首页Linux Shell
23. Linux tr命令

23. Linux tr命令

作者: 姜淑均 | 来源:发表于2017-09-29 07:33 被阅读22次

Linux tr 命令用于转换或删除文件中的字符。

tr 指令从标准输入设备读取数据,经过字符串转译后,将结果输出到标准输出设备。

通过使用 tr,可以非常容易地实现 sed 的许多最基本功能。可以将 tr 看作为 sed 的(极其)简化的变体:它可以用一个字符来替换另一个字符,或者可以完全除去一些字符。也可以用它来除去重复字符。这就是所有 tr 所能够做的。

tr用来从标准输入中通过替换或删除操作进行字符转换。tr主要用于删除文件中控制字符或进行字符转换。使用tr时要转换两个字符串:字符串1用于查询,字符串2用于处理各种转换。tr刚执行时,字符串1中的字符被映射到字符串2中的字符,然后转换操作开始。

语法

tr [-cdst][--help][--version][第一字符集][第二字符集]  

参数说明:

  • -c, --complement:反选设定字符。也就是符合 SET1 的部份不做处理,不符合的剩余部份才进行转换
  • -d, --delete:删除指令字符
  • -s, --squeeze-repeats:缩减连续重复的字符成指定的单个字符
  • -t, --truncate-set1:削减 SET1 指定范围,使之与 SET2 设定长度相等
  • --help:显示程序用法信息
  • --version:显示程序本身的版本信息
  • 字符集1:指定要转换或删除的原字符集。当执行转换操作时,必须使用参数“字符集2”指定转换的目标字符集。但执行删除操作时,不需要参数“字符集2”;
  • 字符集2:指定要转换成的目标字符集。

字符集合的范围:

  • \NNN 八进制值的字符 NNN (1 to 3 为八进制值的字符)
  • \ 反斜杠
  • \a Ctrl-G 铃声
  • \b Ctrl-H 退格符
  • \f Ctrl-L 走行换页
  • \n Ctrl-J 新行
  • \r Ctrl-M 回车
  • \t Ctrl-I tab键
  • \v Ctrl-X 水平制表符
  • CHAR1-CHAR2 :字符范围从 CHAR1 到 CHAR2 的指定,范围的指定以 ASCII 码的次序为基础,只能由小到大,不能由大到小。
  • [CHAR*] :这是 SET2 专用的设定,功能是重复指定的字符到与 SET1 相同长度为止
  • [CHAR*REPEAT] :这也是 SET2 专用的设定,功能是重复指定的字符到设定的 REPEAT 次数为止(REPEAT 的数字采 8 进位制计算,以 0 为开始)
  • [:alnum:] :所有字母字符与数字
  • [:alpha:] :所有字母字符
  • [:blank:] :所有水平空格
  • [:cntrl:] :所有控制字符
  • [:digit:] :所有数字
  • [:graph:] :所有可打印的字符(不包含空格符)
  • [:lower:] :所有小写字母
  • [:print:] :所有可打印的字符(包含空格符)
  • [:punct:] :所有标点字符
  • [:space:] :所有水平与垂直空格符
  • [:upper:] :所有大写字母
  • [:xdigit:] :所有 16 进位制的数字
  • [=CHAR=] :所有符合指定的字符(等号里的 CHAR,代表你可自订的字符)

实例

1. 将文件testfile中的小写字母全部转换成大写字母,此时,可使用如下命令:

cat testfile |tr a-z A-Z 

'A-Z' 和 'a-z'都是集合,集合是可以自己制定的,例如:'ABD-}'、'bB.,'、'a-de-h'、'a-c0-9'都属于集合,集合里可以使用'\n'、'\t',可以可以使用其他ASCII字符。

也可以通过[:lower][:upper]参数来实现。例如使用如下命令:

cat testfile |tr [:lower:] [:upper:] 

testfile文件中的内容如下:

$ cat testfile         #testfile原来的内容  
Linux networks are becoming more and more common, 
but scurity is often an overlooked  
issue. Unfortunately, in today’s environment all networks 
are potential hacker targets,  
fro0m tp-secret military research networks to small home LANs.  
Linux Network Securty focuses on securing Linux in a 
networked environment, where the  
security of the entire network needs to be considered
rather than just isolated machines.  
It uses a mix of theory and practicl techniques to 
teach administrators how to install and  
use security applications, as well as how the 
applcations work and why they are necesary. 

使用 tr 命令大小写转换后,得到如下输出结果:

$ cat testfile | tr a-z A-Z  
或
$ cat testfile | tr [:lower:] [:upper:] 
#转换后的输出  
LINUX NETWORKS ARE BECOMING MORE AND MORE COMMON, BUT SCURITY IS OFTEN AN OVERLOOKED  
ISSUE. UNFORTUNATELY, IN TODAY’S ENVIRONMENT ALL NETWORKS ARE POTENTIAL HACKER TARGETS,  
FROM TP-SECRET MILITARY RESEARCH NETWORKS TO SMALL HOME LANS.  
LINUX NETWORK SECURTY FOCUSES ON SECURING LINUX IN A NETWORKED ENVIRONMENT, WHERE THE  
SECURITY OF THE ENTIRE NETWORK NEEDS TO BE CONSIDERED RATHER THAN JUST ISOLATED MACHINES.  
IT USES A MIX OF THEORY AND PRACTICL TECHNIQUES TO TEACH ADMINISTRATORS HOW TO INSTALL AND  
USE SECURITY APPLICATIONS, AS WELL AS HOW THE APPLCATIONS WORK AND WHY THEY ARE NECESARY. 

2. 使用tr删除字符

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

3. 将制表符转换为空格

cat text | tr '\t' ' '

4. 字符集补集,从输入文本中将不在补集中的所有字符删除

echo aa.,a 1 b#$bb 2 c*/cc 3 ddd 4 | tr -d -c '0-9 \n' 
1  2  3  4

此例中,补集中包含了数字0~9、空格和换行符\n,所以没有被删除,其他字符全部被删除了。

5. 用tr压缩字符,可以压缩输入中重复的字符

echo "thissss is a text linnnnnnne." | tr -s ' sn' 
this is a text line.

6. 巧妙使用tr做数字相加操作

echo 1 2 3 4 5 6 7 8 9 | xargs -n1 | echo $[ $(tr '\n' '+') 0 ]

7. 删除Windows文件“造成”的'^M'字符

cat file | tr -s "\r" "\n" > new_file 
或 
cat file | tr -d "\r" > new_file

相关文章

  • 23. Linux tr命令

    Linux tr 命令用于转换或删除文件中的字符。 tr 指令从标准输入设备读取数据,经过字符串转译后,将结果输出...

  • Linux命令--tr

    一、 命令简介: tr命令是用来替换和删除字符的。 二、 命令选项: -d: 删除指令字符 三、 命令...

  • Linux的管道命令

    Linux的管道命令 管道命令(Pipe) 双向重定向 字符转换命令:tr,col,join,paste,expand

  • Linux命令学习手册-tr

    功能 转换或者删除字符。 描述 tr 指令从标准输入设备读取数据,经过字符串转译后,输出到标准输出设备。 通过使用...

  • 八.Linux之tr命令

    tr为translate的简写,表示转换、转变。 tr命令基本格式 tr [选项] 字符串1 字符串2 <输入文件...

  • linux命令tee,paste,tr

    tee工具tee工具时从标准输江读取并写入到标准输出和文件,即:双向覆盖重定向(屏幕输出|文本输入)选项:-a双向...

  • Linux shell tr 命令详解

    该随笔摘自 https://www.jb51.net/article/103892.htm[https://www...

  • 1.tr

    0.简述 1.查看tr命令类型 2.tr为外部命令,使用tr --help或man tr查看常见命令参数 3.常用...

  • 简单的文本处理

    一、tr命令 tr命令可以用来删除一段文本中的某些文字,或者将其进行转换。 tr使用方法: tr常用选项: tr常...

  • Linux 去除文件中空行的几种方式

    tr 命令 sed 命令 awk 命令 grep 命令

网友评论

    本文标题:23. Linux tr命令

    本文链接:https://www.haomeiwen.com/subject/qwpbextx.html