[Shell]tr命令详解

前端之家收集整理的这篇文章主要介绍了[Shell]tr命令详解前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
1. 用途@H_403_3@

tr,translate的简写,主要用于压缩重复字符,删除文件中的控制字符以及进行字符转换操作。@H_403_3@

2. 语法@H_403_3@
 
  
  1. tr@H_403_3@[@H_403_3@OPTION@H_403_3@]...@H_403_3@SET1@H_403_3@SET2@H_403_3@]@H_403_3@
3. 参数@H_403_3@@H_403_3@
3.1 -s 压缩重复字符@H_403_3@

-s: squeeze-repeats,用SET1指定的字符来替换对应的重复字符 (replace each input sequence of a repeated character that is@H_403_3@listed in SET1 wi@H_403_3@th a single occurrence of that character@H_403_3@)@H_403_3@

 
    
  1. xiaosi@Qunar@H_403_3@:~/@H_403_3@test$ echo@H_403_3@"aaabbbaacccfddd"@H_403_3@@H_403_3@|@H_403_3@-@H_403_3@s@H_403_3@abcdf@H_403_3@] // abacfd@H_403_3@

可以使用这一特点,删除文件中的空白行,实质上跟上面一样,都是用SET1指定的字符来替换对应的重复字符

test$ cat b@H_403_3@.@H_403_3@txt@H_403_3@ 
     
  • I like football@H_403_3@
  • Football@H_403_3@is very fun@H_403_3@!@H_403_3@
  • Hello@H_403_3@
  • txt@H_403_3@[@H_403_3@"\n"@H_403_3@]@H_403_3@
  • I like football@H_403_3@
  • !@H_403_3@
  • Hello@H_403_3@
  • 3.2 -d 删除字符@H_403_3@

    -d:delete,删除SET1中指定的所有字符,不转换(delete characters in SET1,do not translate)

    "a12HJ13fdaADff"@H_403_3@d@H_403_3@"[a-z][A-Z]"@H_403_3@ 
         
  • 1213@H_403_3@
  • "a1213fdasf"@H_403_3@d@H_403_3@adfs@H_403_3@]@H_403_3@
  • 1213@H_403_3@

  • 3.3 字符替换@H_403_3@

    -t:truncate,将SET1中字符用SET2对应位置的字符进行替换,一般缺省为-t@H_403_3@

     
       
    1. t@H_403_3@afd@H_403_3@]@H_403_3@AFO@H_403_3@@H_403_3@// A1213FOAsF@H_403_3@

    上述代码将a转换为A,f转换为F,d转换为O。

    可以利用这一特点,实现大小字母的转换

    "Hello World I Love You"@H_403_3@a@H_403_3@z@H_403_3@A@H_403_3@Z@H_403_3@]@H_403_3@ 
        
  • HELLO WORLD I LOVE YOU@H_403_3@
  • "HELLO WORLD I LOVE YOU"@H_403_3@]@H_403_3@
  • hello world i love you@H_403_3@
  • 也可以利用字符集合进行转换@H_403_3@
    [:@H_403_3@lower@H_403_3@:]@H_403_3@upper@H_403_3@:]@H_403_3@
  • HELLO WORLD I LOVE YOU@H_403_3@
  • :]@H_403_3@
  • hello world i love you@H_403_3@
  • 备注:@H_403_3@@H_403_3@

    字符集合如下

    \NNN@H_403_3@八进制值的字符@H_403_3@NNN@H_403_3@(@H_403_3@1@H_403_3@to@H_403_3@3@H_403_3@为八进制值的字符)@H_403_3@
  • \\@H_403_3@反斜杠@H_403_3@
  • \a@H_403_3@Ctrl@H_403_3@G@H_403_3@铃声@H_403_3@
  • \b@H_403_3@H@H_403_3@退格符@H_403_3@
  • \f@H_403_3@L@H_403_3@走行换页@H_403_3@
  • \n@H_403_3@J@H_403_3@新行@H_403_3@
  • \r@H_403_3@M@H_403_3@回车@H_403_3@
  • \t@H_403_3@I tab@H_403_3@键@H_403_3@
  • \v@H_403_3@X@H_403_3@水平制表符@H_403_3@
  • CHAR1@H_403_3@CHAR2@H_403_3@从@H_403_3@到@H_403_3@的所有字符按照@H_403_3@ASCII@H_403_3@字符的顺序@H_403_3@
  • CHAR@H_403_3@*]@H_403_3@in SET2@H_403_3@,@H_403_3@copies of CHAR until length of SET1@H_403_3@
  • *@H_403_3@REPEAT@H_403_3@REPEAT copies of CHAR@H_403_3@REPEAT octal@H_403_3@if@H_403_3@starting with@H_403_3@0@H_403_3@
  • alnum@H_403_3@所有的字母和数字@H_403_3@
  • alpha@H_403_3@所有字母@H_403_3@
  • blank@H_403_3@水平制表符,空白等@H_403_3@
  • cntrl@H_403_3@所有控制字符@H_403_3@
  • digit@H_403_3@所有的数字@H_403_3@
  • graph@H_403_3@所有可打印字符,不包括空格@H_403_3@
  • 所有的小写字符@H_403_3@
  • print@H_403_3@所有可打印字符,包括空格@H_403_3@
  • punct@H_403_3@所有的标点字符@H_403_3@
  • space@H_403_3@所有的横向或纵向的空白@H_403_3@
  • 所有大写字母@H_403_3@

  • 3.4 字符补集替换@H_403_3@

    -c:complement,用SET2替换SET1中没有包含的字符

    test$ cat a@H_403_3@txt@H_403_3@
  • Monday@H_403_3@@H_403_3@09@H_403_3@:@H_403_3@00@H_403_3@
  • Tuesday@H_403_3@10@H_403_3@
  • Wednesday@H_403_3@10@H_403_3@11@H_403_3@
  • Thursday@H_403_3@11@H_403_3@30@H_403_3@
  • Friday@H_403_3@08@H_403_3@00@H_403_3@
  • Saturday@H_403_3@07@H_403_3@40@H_403_3@
  • Sunday@H_403_3@00@H_403_3@
  • c@H_403_3@"[a-z][A-Z]"@H_403_3@@H_403_3@"#"@H_403_3@s@H_403_3@t@H_403_3@"\n"@H_403_3@
  • Monday@H_403_3@
  • Tuesday@H_403_3@
  • Wednesday@H_403_3@
  • Thursday@H_403_3@
  • Friday@H_403_3@
  • Saturday@H_403_3@
  • Sunday@H_403_3@
  • 上面代码中 tr -c "[a-z][A-Z]" "#" 表示将除大小字母以外的所有的字符都替换为#。

    上面代码可优化为:

    cs@H_403_3@"\n"@H_403_3@
  • Monday@H_403_3@
  • Tuesday@H_403_3@
  • Wednesday@H_403_3@
  • Thursday@H_403_3@
  • Friday@H_403_3@
  • Saturday@H_403_3@
  • Sunday@H_403_3@
  • 猜你在找的Bash相关文章