微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

[Shell]tr命令详解

1. 用途

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

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

-s: squeeze-repeats,用SET1指定的字符来替换对应的重复字符 (replace each input sequence of a repeated character that islisted in SET1 with a single occurrence of that character

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

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

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

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

    "a12HJ13fdaADff"d"[a-z][A-Z]" 
         
  • 1213
  • "a1213fdasf"dadfs]
  • 1213

  • 3.3 字符替换

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

     
       
    1. tafd]AFO// A1213FOAsF

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

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

    "Hello World I love You"azAZ] 
        
  • HELLO WORLD I lovE YOU
  • "HELLO WORLD I lovE YOU"]
  • hello world i love you
  • 也可以利用字符集合进行转换
    [:lower:]upper:]
  • HELLO WORLD I lovE YOU
  • :]
  • hello world i love you
  • 备注:

    字符集合如下

    \NNN八进制值的字符NNN(1to3为八进制值的字符)
  • \\反斜杠
  • \aCtrlG铃声
  • \bH退格符
  • \fL走行换页
  • \nJ新行
  • \rM回车
  • \tI tab
  • \vX水平制表符
  • CHAR1CHAR2的所有字符按照ASCII字符的顺序
  • CHAR*]in SET2,copies of CHAR until length of SET1
  • *REPEATREPEAT copies of CHARREPEAT octalifstarting with0
  • alnum所有的字母和数字
  • alpha所有字母
  • blank水平制表符,空白等
  • cntrl所有控制字符
  • digit所有的数字
  • graph所有可打印字符,不包括空格
  • 所有的小写字符
  • print所有可打印字符,包括空格
  • punct所有的标点字符
  • space所有的横向或纵向的空白
  • 所有大写字母

  • 3.4 字符补集替换

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

    test$ cat atxt
  • Monday09:00
  • Tuesday10
  • Wednesday1011
  • Thursday1130
  • Friday0800
  • Saturday0740
  • Sunday00
  • c"[a-z][A-Z]""#"st"\n"
  • Monday
  • Tuesday
  • Wednesday
  • Thursday
  • Friday
  • Saturday
  • Sunday
  • 上面代码中 tr -c "[a-z][A-Z]" "#" 表示将除大小字母以外的所有的字符都替换为#。

    上面代码可优化为:

    cs"\n"
  • Monday
  • Tuesday
  • Wednesday
  • Thursday
  • Friday
  • Saturday
  • Sunday
  • 原文地址:https://www.jb51.cc/bash/388204.html

    版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

    相关推荐