当前位置:   article > 正文

linux tr命令_tr '\0' '\n

tr '\0' '\n

tr命令可以对来自标准输入的字符进行替换、压缩和删除。tr只能接收来自标准的输入流,不能接收参数。

 

语法

tr [OPTION]... SET1 [SET2]

注意:SET2是可选项

OPTION:

 

  1. 不带参数:将SET2中的每个字符替换SET1中的每个字符,字符是顺序替换,如果SET1的字符长度大于SET2,那么将SET1中多出来的字符用SET2中的最后一个字符替换。
  2. -t:将SET2中的每个字符替换SET1中的每个字符,字符字符顺序1对1替换,无论SET1还是SET2哪个长,只替换对应的字符,多出的不替换。
  3. -c:取反操作,取数据流中SET1中指定字符的补集。
  4. -d:删除SET1中指定的字符,这里没有SET2
  5. -s:将SET1中指定的连续的连续重复的字符用单个字符替代,可以使用-s '\n'删除空行。

 

 

字符集代码:

 

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

 

 

  1. \\ 反斜杠
  2. \a 终端鸣响
  3. \b 退格
  4. \f 换页
  5. \n 换行
  6. \r 回车
  7. \t 水平制表符
  8. \v 垂直制表符
  9. \0 null字符

 

示例:

 1.不带参数将SET2替换SET1替换,且SET1长度大于SET2

  1. [root@localhost ~]# echo "aaAA1bbBB2ccCC3" | tr 'abc' '12'
  2. 11AA122BB222CC3

a被替换成1,b被替换成2,c被替换成2

 2.不带参数将SET2替换SET1替换,且SET1长度小于SET2

  1. [root@localhost ~]# echo "aaAA1bbBB2ccCC3" | tr 'ab' '123'
  2. 11AA122BB2ccCC3

a被替换成1,b被替换成2

 3.-t参数

  1. [root@localhost ~]# echo "aaAA1bbBB2ccCC3" | tr -t 'abc' '12'
  2. 11AA122BB2ccCC3
  3. [root@localhost ~]# echo "aaAA1bbBB2ccCC3" | tr -t 'ab' '123'
  4. 11AA122BB2ccCC3

都是a被替换成1,b被替换成2

4.删除指定字符,-d

  1. [root@localhost ~]# echo "aaAA1bbBB2ccCC3" | tr -d 'a-z'
  2. AA1BB2CC3
  3. [root@localhost ~]# echo "aaAA1bbBB2ccCC3" | tr -d -c 'a-z\n'
  4. aabbcc

第一个是删除小写字符,第二个是删除小写字符之外的其它字符, 下面这种使用字符集的效果是一样的。

  1. [root@localhost ~]# echo "aaAA1bbBB2ccCC3" | tr -d '[:lower:]'
  2. AA1BB2CC3
  3. [root@localhost ~]# echo "aaAA1bbBB2ccCC3" | tr -d -c '[:lower:]\n'
  4. aabbcc

5.替换连续字符,-s

  1. [root@localhost ~]# echo "aaAA1bbBB2ccCC3" | tr -s 'a-zA-Z'
  2. aA1bB2cC3
  3. [root@localhost ~]# echo "aaAA1bbBB2ccCC3" | tr -s '[:alnum:]\n'
  4. aA1bB2cC3

上面两种方法都是将重复的多个字符替换成单个字符

6.-c操作 

  1. [root@localhost test]# echo "name" |tr -d -c 'a \n'
  2. a

上述操作是删除标准输入中除“a”,空格 "\n"之外的字符

 

其它用法:将null字符用换行符替代

 

  1. [root@localhost ~]# cat /proc/4518/environ \n
  2. TERM=xtermPATH=/sbin:/usr/sbin:/bin:/usr/bin:/usr/local/mysql/binPWD=/usr/local/mysqlSHLVL=2OLDPWD=/_=/usr/local/mysql/bin/mysqld_safecat: n: No such file or directory
  3. [root@localhost ~]# cat /proc/4518/environ |tr '\0' '\n'
  4. TERM=xterm
  5. PATH=/sbin:/usr/sbin:/bin:/usr/bin:/usr/local/mysql/bin
  6. PWD=/usr/local/mysql
  7. SHLVL=2
  8. OLDPWD=/
  9. _=/usr/local/mysql/bin/mysqld_safe
  10. [root@localhost ~]#

 

将一句话拆成多行。

 

其它的巧妙用法:

1.文本内容相加

  1. [root@localhost test]# cat test
  2. 0 1 2 3 4
  3. 5 6 7 8 9

test文件是由两行空格的数字组成,接下来需要将里面的数字想加

  1. [root@localhost test]# cat test|tr ' ' '\n'|echo $[ $( tr '\n' '+' ) 0 ]
  2. 45

2.加密

  1. [root@localhost test]# echo "name" |tr 'name' 'xcbe'
  2. xcbe

总结

有一个误区很容易被误理解成SET1,SET2是一个字符组合,其实不是这样的;SET1和SET2里面都是值的单个字符之间的替换,比如'ab'不要把ab理解成一个组合,tr还有很多的巧妙的用法这需要多去实践。

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/AllinToyou/article/detail/192427
推荐阅读
相关标签
  

闽ICP备14008679号