linux(centos8):用tr替换或删除字符

一,tr命令的用途

tr命令可以替换或删除文件中的字符

它从标准输入设备读取数据,

处理完成将结果输出到标准输出设备

说明:刘宏缔的架构森林是一个专注架构的博客,地址:https://www.cnblogs.com/architectforest

         对应的源码可以访问这里获取: https://github.com/liuhongdi/

说明:作者:刘宏缔 邮箱: 371125307@qq.com

  

二,查看tr命令所属的rpm包

[root@blog ~]# whereis tr
tr: /usr/bin/tr /usr/share/man/man1/tr.1.gz /usr/share/man/man1p/tr.1p.gz

[root@blog ~]# rpm -qf /usr/bin/tr
coreutils-8.30-6.el8.x86_64

如果提示找不到命令或命令被误删除,

可以用dnf安装

[root@blog ~]$ dnf install coreutils

三,查看tr命令的版本和帮助

1,查看版本

[root@blog ~]# tr --version
tr (GNU coreutils) 8.30
Copyright (C) 2018 Free Software Foundation, Inc.
License GPLv3+: GNU GPL version 3 or later <https://gnu.org/licenses/gpl.html>.
This is free software: you are free to change and redistribute it.
There is NO WARRANTY, to the extent permitted by law.

Written by Jim Meyering.

2,查看帮助

[root@blog ~]# tr --help

3,查看手册

[root@blog ~]# man tr

四,tr命令的使用例子

1,删除字符

去除df输出结果中的已使用百分比的百分号:%

#-d:删除指定的字符

[root@blog ~]# df -h | tr -d '%'
Filesystem      Size  Used Avail Use Mounted on
devtmpfs        7.5G     0  7.5G   0 /dev
tmpfs           7.5G     0  7.5G   0 /dev/shm
tmpfs           7.5G  492K  7.5G   1 /run
tmpfs           7.5G     0  7.5G   0 /sys/fs/cgroup
/dev/vda1       100G   15G   86G  15 /
/dev/vdb1       500G  3.6G  497G   1 /databak
tmpfs           1.5G     0  1.5G   0 /run/user/1000

2,把小写输出转为大写:

[root@blog ~]# df -h | tr a-z A-Z
FILESYSTEM      SIZE  USED AVAIL USE% MOUNTED ON
DEVTMPFS        7.5G     0  7.5G   0% /DEV
TMPFS           7.5G     0  7.5G   0% /DEV/SHM
TMPFS           7.5G  492K  7.5G   1% /RUN
TMPFS           7.5G     0  7.5G   0% /SYS/FS/CGROUP
/DEV/VDA1       100G   15G   86G  15% /
/DEV/VDB1       500G  3.6G  497G   1% /DATABAK
TMPFS           1.5G     0  1.5G   0% /RUN/USER/1000

说明:大小写字符集可以用集合字串表示,

上面的命令等同于:

[root@blog ~]# df -h | tr '[:lower:]' '[:upper:]'

3,压缩连续的字符

  例子:打印每个分区和使用的占比

#-s:--squeeze-repeats:缩减连续重复的字符成指定的单个字符

[root@blog ~]$ df -h | sed '1d' | tr -s ' ' | cut -d ' ' -f 1,5
devtmpfs 0%
tmpfs 0%
tmpfs 1%
tmpfs 0%
/dev/vda1 15%
/dev/vdb1 1%
tmpfs 0%

说明:df 命令输出的部分空格较多,数量不一致,

          我们用tr做一下压缩,这样方便cut读取

4,取消换行

只需要把" "替换成其它字符即可

[root@blog ~]# seq 5
1
2
3
4
5
[root@blog ~]# seq 5 | tr "
" "|"
1|2|3|4|5|

5,删除所有小写字符

[root@blog ~]# df -h | tr -d a-z
F      S  U A U% M
        7.5G     0  7.5G   0% /
           7.5G     0  7.5G   0% //
           7.5G  492K  7.5G   1% /
           7.5G     0  7.5G   0% ///
//1       100G   15G   86G  15% /
//1       500G  3.6G  497G   1% /
           1.5G     0  1.5G   0% ///1000

说明:小写字符集可以用[:lower:]这个集合字串表示

所以上面的命令等同于:

[root@blog ~]# df -h | tr -d '[:lower:]' 

删除小写字符以外的所有字符:

#-c: 取反操作,取指定字符集合的补集

[root@blog ~]# df -h | tr -d -c a-z

6,运维:使/proc目录下进程的环境变量能正常换行显示

[root@blog ~]# cat /proc/28026/environ
...TERM=xtermSHELL=/bin/bashSHLVL=1LOGNAME=webop...

proc中的环境变量是供程序阅读,查看时不够人性化,

我们使它可以正常阅读

[root@blog ~]# cat /proc/28026/environ | tr  '' '
'
...
TERM=xterm
SHELL=/bin/bash
SHLVL=1
LOGNAME=webop
...

五,tr命令的相关文档

1,字符集合的代码:

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

2,转义字符

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

六,查看centos版本

[root@blog ~]# cat /etc/redhat-release
CentOS Linux release 8.0.1905 (Core)
原文地址:https://www.cnblogs.com/architectforest/p/12893580.html