tr命令常用方式总结

1. 简介  

  tr命令常用来替换,删除来自标准输入字符串中的字符。注意,操作的单位是字符,不是字符串。也就是说,不管是替换还是删除,都是针对字符串中某个字符的。比如tr命令不能很方便地实现字符串替换:把“Hello World”变成“Hello Beijing”,但是可以很方便地把每一个大写字符变成小写字符,echo "Hello World" | tr '[A-Z]' '[a-z]', 最后输出“hello world”。

 

2. 使用方法

  tr  [option]   SET1   [SET2]

  其中SET1通常作为被处理的字符集,是必须要给出的。而SET2一般只有在使用tr进行字符替换的时候才会用到。而且SET2和SET1必须一样长。比如, echo "x0y0z" | tr [xyz] [abc] , 这里需要注意,tr是针对字符的,不是字符串的。所以例子中意思是,把字符x替换成字符a,把字符y替换成字符b,把字符z替换成字符c。并不是把xyz替换成abc。这也是SET2必须和SET1一样长的原因。这个例子最后输出“a0b0c”。

  option

    -d 或 --delete, 删除指定的字符, 比如  echo "i2i3ii0i3i4i9i" | tr -d [0-9], 删除字符串中所有的数字,最后输出 “iiiiiiii”。

    -c 或 --completment, 反选字符,在SET1中的字符不做处理,其余的做出对应处理。比如   echo "HeHe" | tr -d -c [e]  , 删除除了字符‘e’之外的其他字符。

    -s 或-squeeze-repeats, 把连续的字符变成单个字符,比如 echo "I looooooove my moneyyyyyyyyy" | tr -s [a-z], 最后输出 “I love my money”。

  SET

    CHAR1-CHAR2, 表示范围。只能由小到大,不能由大到小

    常见的反斜杠转义字符,比如'\n', '\t', '\r'之类的

    [:alnum:] :所有字母字符与数字

    [:digit:] :所有数字

    [:upper:] :所有大写字母

    [:space:] :所有水平与垂直空格符

 

3. 常见用法

  <1> 小写转大写:

    echo “hello” | tr [a-z] [A-Z]   或者  echo "hello" tr [:lower:] [:upper:]

  <2> 删除Windows文件“造成”的'^M'字符

    cat  $file_name  |  tr -d "\r"  

    <3> 删除连续的字符

    echo "hhhhhh" | tr -s [:alnum:]

 

posted @ 2018-07-25 22:39  Frogjie  阅读(2090)  评论(0编辑  收藏  举报