zoukankan      html  css  js  c++  java
  • linux tr命令用法

    tr(translate),一个很好用的字符映射命令,有以下几个优点,可以用来辅助cat ,grep,vi等命令:

    (1)自定义字符集合进行字符映射

    (2)处理一些特殊字符,例如' ',' '等

    (3)删除字符或者字符集合

    (4)进行字符压缩

    (1)字符映射

    [root@hexel ~]#echo abcdEFG | tr 'a-z' 'A-Z' --这里使用了字母集合,把小写字母替换成大写字母

    ABCDEFG

    注意,如果后面字符集合比前面字符集合小,结果是映射后的最后一个字符重复,以补足,例如:

    [root@hexel ~]#echo abcdefgHIG | tr 'a-z' 'A-C' --后面一个字符集小    

    ABCCCCCHIG

    字符集合可以自定义,例如:

    [root@hexel ~]#echo lnpnEFG | tr 'a-z' '0-3'

    3333EFG

    [root@hexel ~]#echo lnpn123EFG | tr 'a-z0-9' 'a-z1'

    lnpn111EFG

    (2)替换字符

    例如:

    [root@hexel ~/shell/tr]#cat tr.sh 

    123     edf

    1234    abc

    现在要把制表符替换成逗号,这在处理csv文件时非常有用,比vi批量替换高效不少:

    [root@hexel ~/shell/tr]#cat tr.sh | tr ' ' ','

    123,edf

    1234,abc

    (3)删除字符(支持字符集合删除):

    [root@hexel ~/shell/tr]#echo 'hello 123' | tr -d '0-9'  --删除数字

    hello

    相反,有时候可能要保留一类字符而删除其他所有字符,这时候可以使用-c选项指定例外字符集,例如:

    [root@hexel ~/shell/tr]#echo 'hello!@#123' | tr -d -c ' 0-9' 

    123

    (4)压缩字符

    cat可以用-s选项压缩多行连续的空白行为一行,但是无法删除空白行,使用tr可以办到(原理是把连续的 字符压缩为一个),例如:

    [root@hexel ~/shell/tr]#cat tr1.sh 

    1

    2

    3

    [root@hexel ~/shell/tr]#cat -s tr1.sh 

    1

    2

    3

    [root@hexel ~/shell/tr]#cat  tr1.sh  | tr -s ' '

    1

    2

    3

    这种写法比grep -v后接正则表达式(^$)简单很多了。

    可以对上面的结果进行求和,与循环相加相比,代码量少了很多:

    [root@hexel ~/shell/tr]#cat  tr1.sh  | tr -s ' ' | echo $[ $(tr ' ' '+') 0  ]   

    6

    这利用了算数运算方法:

    [root@hexel ~/shell/tr]#echo $[ 1+2+3+0 ]                      

    6

  • 相关阅读:
    LeetCode_4——寻找两个有序数组的中位数
    Java的CAS与ABA问题
    跨域问题解决
    解决git-for-windows官网下载速度慢的问题
    Java对观察者模式的支持
    Java动态代理
    设计模式七大原则
    UML中的类图关系
    布隆过滤器(Bloom Filter)与Hash算法
    Ubuntu16安装fabric1.4.4环境
  • 原文地址:https://www.cnblogs.com/xingxingge/p/10927902.html
Copyright © 2011-2022 走看看