加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 综合聚焦 > 服务器 > 安全 > 正文

[Shell]tr命令详解

发布时间:2020-12-15 19:31:00 所属栏目:安全 来源:网络整理
导读:1. 用途 tr,translate的简写, 主要用于压缩重复字符,删除文件中的控制字符以及进行字符转换操作。 2. 语法 tr [ OPTION ]... SET1 SET2 ] 3. 参数 3.1 -s 压缩重复字符 -s: squeeze-repeats,用SET1指定的字符来替换对应的重复字符 ( replace each inpu
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
  • (编辑:李大同)

    【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

      推荐文章
        热点阅读