• tr 压缩命令


    tr:
        tr [options] [SET1] [SET2]
        处理输入信息的(转换和删除字符串的,后换前);
        默认是键盘输入,所以你输入tr,跟cat同理,都是等待键盘的输入的;所以tr和cat也可能利用<(输入重定向来)来接收文件的信息;
        参数:
            -t:截断,使得SET1的长度和SET2的长度相同;
                tr -t 123 ab;后面只有2个所以会截断到前面2个,3不做替换;
            -d:指定删
                tr -d 'a-z' < /etc/fstab;
                    把所有小写的都删了;
                tr -dc 'a'
                    会除了a都算,连按的回车也算,所以结束输入需要用ctrl+d;’a ‘这样是保留a和回车; 
            -s:把连续出现的自动内容压缩成一个;
            -c:取反;
                tr -sc 'a';
                    就是除了a都去重;  
            tr -s " " :
                压缩了之后再用:代替空格;
                这种方法在日后的操作中非常多用,当有很多分割符的时候可以用tr来改成一个来处理;   
    1.1.1tr的映射
    tr是映射而不是替换,是因为两个结果集替换的时候符号位置是一一对应的。如果SET1比SET2短,则SET2多余的部分会被忽略,如果SET1比SET2长,POSIX认为这是不合理的,但也能执行,只不过结果有些意料之外,见下文。例如下面的例子,因为SET1中只有一个符号" ",于是替换时SET2中的Y被忽略。
    SET1<SET2
    [root@centos7 ~]# ls /app |tr ' ' "XY"
    192.168.241.0.logXbackup.shXf1Xhaha.logXhttpd.logXi_f.shXissueXnohup.outXscan_ip.shXsysconfig12018-08-03.tar.xzX[root@centos7 ~]#
    SET1>SET2
    [root@centos7 ~]# echo abcabcdfgqwedfg|tr 'abc' 'xy'
    xyyxyydfgqwedfg
    以上分析来看,a—>x和b,c—>y,并非是你所想的abc一个整体对应xy
    使用-t截断
    [root@centos7 ~]# echo abcabcdfgqwedfgafb|tr -t 'abc' 'xy'
    xycxycdfgqwedfgxfy
    这样就是a—>x,b—>y,而c作为截断在外的
    所以说tr不是以某一个字符串与某一个字符串的替换,而是字符之间的映射;
    实现简单的加密和解密
    [root@centos7 ~]# echo "12345" |tr "0-9" "9876543210"               #加密
    87654
    [root@centos7 ~]# echo "87654" |tr "0-9" "9876543210"                #解密
    12345
    tr的SET1到SET2的映射就是作为秘钥了,只要有一套自己的秘钥,那么就可以简单实现加解密了;
    1.1.2tr的压缩
    -s选项是用来压缩,压缩指定连续的字符一个或者多个;在文本处理中与cut配合来取出某一列是相当快捷,简单的
    实例知道磁盘的使用率
    [root@centos7 ~]# df -h | tr -s " "
    Filesystem Size Used Avail Use% Mounted on
    /dev/sda2 50G 7.5G 43G 15% /
    devtmpfs 485M 0 485M 0% /dev
    tmpfs 500M 0 500M 0% /dev/shm
    tmpfs 500M 52M 449M 11% /run
    tmpfs 500M 0 500M 0% /sys/fs/cgroup
    /dev/sda3 20G 33M 20G 1% /app
    /dev/sda1 1014M 158M 857M 16% /boot
    tmpfs 100M 36K 100M 1% /run/user/0
    /dev/sr0 8.1G 8.1G 0 100% /run/media/root/CentOS 7 x86_64
    #不指定SET2,仅仅是压缩,也可压缩替换一起使用
    [root@centos7 ~]# df -h | tr -s " " ":"
    Filesystem:Size:Used:Avail:Use%:Mounted:on
    /dev/sda2:50G:7.5G:43G:15%:/
    devtmpfs:485M:0:485M:0%:/dev
    tmpfs:500M:0:500M:0%:/dev/shm
    tmpfs:500M:52M:449M:11%:/run
    tmpfs:500M:0:500M:0%:/sys/fs/cgroup
    /dev/sda3:20G:33M:20G:1%:/app
    /dev/sda1:1014M:158M:857M:16%:/boot
    tmpfs:100M:36K:100M:1%:/run/user/0
    /dev/sr0:8.1G:8.1G:0:100%:/run/media/root/CentOS:7:x86_64
    #最终配合cut取出
    [root@centos7 ~]# df -h | tr -s " " ":"|cut -d: -f5
    Use%
    15%
    0%
    0%
    11%
    0%
    1%
    16%
    1%
    100%
    1.1.3tr的删除与补集
    如果SET2指定多个字符,将只取最后一个字符作为替换字符
    [root@centos7 ~]# echo dasdadad|tr -c "d " "ac" 
    dccdcdcd
    #只对c生效
    一般-d与-c连用,如实例从随机数中获取只要是随机数字字母的密码
    9J8XZGk3[root@centos7 ~]# openssl rand -base64 50|tr -dc "[0-9][a-z][A-Z] "|head -c8
    ZYS1uwNB[root@centos7 ~]# openssl rand -base64 50|tr -dc "[0-9][a-z][A-Z]"|head -c8 
    LODdrtL1[root@centos7 ~]# openssl rand -base64 50|tr -dc "[0-9][a-z][A-Z]"|head -c8
    cc0PZ9tO[root@centos7 ~]#
  • 相关阅读:
    4.19Java.util.Arrays类
    4.19Java数组的拷贝
    Inverse matrix of 4x4 matrix
    自言自语
    病了两天
    当年3ds max盗版光碟上的广告
    头晕的厉害
    复习了一下STL容器的知识
    一个简单的能处理MIPMAP的类
    空间变换代码,相当简洁优美
  • 原文地址:https://www.cnblogs.com/xl-892694298/p/11016925.html
Copyright © 2020-2023  润新知