Linux tr命令

本文涉及的产品
RDS MySQL Serverless 基础系列,0.5-2RCU 50GB
云数据库 RDS MySQL,集群系列 2核4GB
推荐场景:
搭建个人博客
转发路由器TR,750小时连接 100GB跨地域
简介:

介绍

tr命令可以对来自标准输入的字符进行替换、压缩和删除。tr只能接收来自标准的输入流,不能接收参数。


语法

tr [OPTION]... SET1 [SET2]

注意:SET2是可选项

OPTION:

复制代码
不带参数:将SET2中的每个字符替换SET1中的每个字符,字符是顺序替换,如果SET1的字符长度大于SET2,那么将SET1中多出来的字符用SET2中的最后一个字符替换。
-t:将SET2中的每个字符替换SET1中的每个字符,字符字符顺序1对1替换,无论SET1还是SET2哪个长,只替换对应的字符,多出的不替换。
-c:取反操作,取数据流中SET1中指定字符的补集。
-d:删除SET1中指定的字符,这里没有SET2
-s:将SET1中指定的连续的连续重复的字符用单个字符替代,可以使用-s '\n'删除空行
复制代码

 

字符集代码:

复制代码
[:alnum:]:字母和数字,可以用来替代'a-zA-Z0-9' 
[:alpha:]:字母,可以用来替代'a-zA-Z' 
[:cntrl:]:控制(非打印)字符 
[:digit:]:数字,可以用来替代'0-9' 
[:graph:]:图形字符 
[:lower:]:小写字母,可以用来替代'a-z' 
[:print:]:可打印字符 
[:punct:]:标点符号 
[:space:]:空白字符 
[:upper:]:大写字母,可以用来替代'A-Z' 
[:xdigit:]:十六进制字符
复制代码

 

复制代码
  \\        反斜杠
  \a        终端鸣响
  \b        退格
  \f        换页
  \n        换行
  \r        回车
  \t        水平制表符
  \v        垂直制表符
\0 null字符
复制代码

 

 

 

示例:

 1.不带参数将SET2替换SET1替换,且SET1长度大于SET2

[root@localhost ~]# echo "aaAA1bbBB2ccCC3" | tr 'abc' '12'
11AA122BB222CC3

a被替换成1,b被替换成2,c被替换成2

 2.不带参数将SET2替换SET1替换,且SET1长度小于SET2

[root@localhost ~]# echo "aaAA1bbBB2ccCC3" | tr 'ab' '123'
11AA122BB2ccCC3

a被替换成1,b被替换成2

 3.-t参数

[root@localhost ~]# echo "aaAA1bbBB2ccCC3" | tr -t 'abc' '12'
11AA122BB2ccCC3
[root@localhost ~]# echo "aaAA1bbBB2ccCC3" | tr -t 'ab' '123'
11AA122BB2ccCC3

都是a被替换成1,b被替换成2

4.删除指定字符,-d

[root@localhost ~]# echo "aaAA1bbBB2ccCC3" | tr -d 'a-z' 
AA1BB2CC3
[root@localhost ~]# echo "aaAA1bbBB2ccCC3" | tr -d -c 'a-z\n'  
aabbcc

第一个是删除小写字符,第二个是删除小写字符之外的其它字符, 下面这种使用字符集的效果是一样的。

[root@localhost ~]# echo "aaAA1bbBB2ccCC3" | tr -d '[:lower:]' 
AA1BB2CC3
[root@localhost ~]# echo "aaAA1bbBB2ccCC3" | tr -d -c '[:lower:]\n'
aabbcc

5.替换连续字符,-s

[root@localhost ~]# echo "aaAA1bbBB2ccCC3" | tr -s 'a-zA-Z'
aA1bB2cC3
[root@localhost ~]# echo "aaAA1bbBB2ccCC3" | tr -s '[:alnum:]\n'
aA1bB2cC3

上面两种方法都是将重复的多个字符替换成单个字符

6.-c操作 

[root@localhost test]# echo "name" |tr -d -c 'a \n'
a

上述操作是删除标准输入中除“a”,空格 "\n"之外的字符

 

其它用法:将null字符用换行符替代

复制代码
[root@localhost ~]# cat /proc/4518/environ \n
TERM=xtermPATH=/sbin:/usr/sbin:/bin:/usr/bin:/usr/local/mysql/binPWD=/usr/local/mysqlSHLVL=2OLDPWD=/_=/usr/local/mysql/bin/mysqld_safecat: n: No such file or directory
[root@localhost ~]# cat /proc/4518/environ |tr '\0' '\n' TERM=xterm PATH=/sbin:/usr/sbin:/bin:/usr/bin:/usr/local/mysql/bin PWD=/usr/local/mysql SHLVL=2 OLDPWD=/ _=/usr/local/mysql/bin/mysqld_safe [root@localhost ~]#
复制代码

将一句话拆成多行。

 

其它的巧妙用法:

1.文本内容相加

[root@localhost test]# cat test
0 1 2 3 4
5 6 7 8 9

test文件是由两行空格的数字组成,接下来需要将里面的数字想加

[root@localhost test]# cat test|tr ' ' '\n'|echo $[ $( tr '\n' '+' ) 0 ]
45

2.加密

[root@localhost test]# echo "name" |tr 'name' 'xcbe'
xcbe

总结

有一个误区很容易被误理解成SET1,SET2是一个字符组合,其实不是这样的;SET1和SET2里面都是值的单个字符之间的替换,比如'ab'不要把ab理解成一个组合,tr还有很多的巧妙的用法这需要多去实践。

 

 






本文转自pursuer.chen(陈敏华)博客园博客,原文链接:http://www.cnblogs.com/chenmh/p/5379633.html,如需转载请自行联系原作者

目录
相关文章
|
19天前
|
Linux 网络安全 Python
linux后台运行命令screen的使用
linux后台运行命令screen的使用
52 2
linux后台运行命令screen的使用
|
19天前
|
Ubuntu Linux
查看Linux系统架构的命令,查看linux系统是哪种架构:AMD、ARM、x86、x86_64、pcc 或 查看Ubuntu的版本号
查看Linux系统架构的命令,查看linux系统是哪种架构:AMD、ARM、x86、x86_64、pcc 或 查看Ubuntu的版本号
130 3
|
25天前
|
存储 监控 安全
在Linux中,⼀个EXT3的文件分区,当使用touch test.file命令创建⼀个新文件时报错,报错的信息是提示磁盘已满,但是采用df -h命令查看磁盘大小时,只使用了,60%的磁盘空间,为什么会出现这个情况?
在Linux中,⼀个EXT3的文件分区,当使用touch test.file命令创建⼀个新文件时报错,报错的信息是提示磁盘已满,但是采用df -h命令查看磁盘大小时,只使用了,60%的磁盘空间,为什么会出现这个情况?
|
15天前
|
机器学习/深度学习 安全 网络协议
Linux防火墙iptables命令管理入门
本文介绍了关于Linux防火墙iptables命令管理入门的教程,涵盖了iptables的基本概念、语法格式、常用参数、基础查询操作以及链和规则管理等内容。
174 73
|
8天前
|
Linux Shell
Linux 中 Tail 命令的 9 个实用示例
Linux 中 Tail 命令的 9 个实用示例
30 6
Linux 中 Tail 命令的 9 个实用示例
|
13天前
|
Linux 应用服务中间件 nginx
|
6天前
|
存储 Linux 编译器
linux中vim介绍以及常用命令大全
linux中vim介绍以及常用命令大全
27 8
|
4天前
|
设计模式 Java Linux
Linux的20个常用命令
Linux的23个常用命令
Linux的20个常用命令
|
8天前
|
机器学习/深度学习 安全 网络协议
Web安全-Linux网络命令
Web安全-Linux网络命令
11 1
|
13天前
|
Ubuntu Linux Shell
Linux系统命令 安装和文件相关命令
本文档详细介绍了Linux系统中的常用命令,包括软件安装卸载命令如`dpkg`和`apt-get`,压缩与解压命令如`gzip`、`bzip2`和`xz`,以及`tar`命令用于打包和解包。此外还介绍了文件分割命令`split`,文件操作命令如`cat`、`head`、`tail`、`more`、`less`等,管道命令和`wc`、`grep`、`find`、`cut`、`sort`、`uniq`、`diff`等实用工具。最后,文档还讲解了文件属性相关的命令如`chmod`、`chown`、`chgrp`以及创建硬链接和软链接的`ln`命令。