• 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)
  • 相关阅读:
    端口扫描技术
    HBase——常用命令
    RabbitMQ——常用命令
    RabbitMQ——基于 KeepAlived + HAProxy 搭建 RabbitMQ 高可用负载均衡集群
    RabbitMQ——安装、集群搭建、镜像队列配置
    Zookeeper——常用命令
    MFC子对话框嵌入主对话框
    Find a way
    Avoid The Lakes
    变形课
  • 原文地址:https://www.cnblogs.com/architectforest/p/12893580.html
Copyright © 2020-2023  润新知