文章详情

  • 游戏榜单
  • 软件榜单
关闭导航
热搜榜
热门下载
热门标签
php爱好者> php文档>tr用法

tr用法

时间:2010-09-30  来源:fzguon

一、tr命令介绍

  tr命令主要用来从标准输入中通过替换或删除操作进行字符转换,然后打印输出到标准输出。可以通过管道或重定向标准输入来获得 tr 的输入数据。tr 对输入数据可以进行三种操作: 字符替换、压缩重复字符和删除字符。

  tr命令格式:tr [OPTION] String1 [String2]  

二、命令详细说明

   1. 在tr中string1和string2用来指示一个字符集合范围。可以是下面的一些形式(一般要加双引号): 

     1) [a-d] : [a-d]表示abcd,常用的有[a-z]、[A-Z]、[0-9]等,[bfgh]表示 bfgh。可以加上单或双引号 

     2) [C*n] : 表示字符 C 重复出现指定次数n。因此,[F*3]表示FFF。一般只能出现在 string2中。 

     3) \nnn : 三位八进制数,对应有效的 ASCII 字符。一般用于表示特定的控制字符。 

            速记符                  含义            八进制方式 

             \a              Ctrl-G   铃声            \007 

             \b              Ctrl-H    退格符         \010 

             \f              Ctrl-L   走行换页        \014 

             \n              Ctrl-J   新行            \012 

             \r              Ctrl-M   回车            \015 

             \t              Ctrl-I   tab 键          \011 

             \v              Ctrl-X                   \030 

     4) [:class_name:] : tr 支持使用内建的字符类别。常见的字符类别有: 

        [:alnum:]     字母、数字(0-9,a-z,A-Z) 

        [:alpha:]     字母(a-z,A-Z) 

        [:cntrl:]     控制字符 

        [:digital:]   数字(0-9) 

        [:graph:]     可打印的字符,不包含空格 

        [:lower:]     小写字母(a-z) 

        [:print:]     可打印的字符,包含空格 

        [:punct:]     标点符号 

        [:space:]     空格 

        [:upper:]     大写字母(A-Z) 

        [:xdigital:]  16 进制数字(0-9,a-f,A-F) 

     5) 普通字符串形式: 比如 aeiou、bdfgh 等。 

  2.选项"-c": 表示用在输入数据中出现,但是不包含在 string1 字符范围内的字符组成的集合,代替原来的 string1。在 tr 的三类操作中都可以使用选项"-c"。 

  eg: echo "adcfghg" | tr -cd fgca  // 将显示 acfgg  输入数据中不包含在 string1 中的字符范围 是"dh"  ,所以,实际上只是删除了字符"dh" 

  3.tr 用于字符替换: 只需要同时给出 string1 和 string2,可以需要不指定特别的选项。 

   1) Usage: tr string1 string2 

     输入数据中属于 string1 字符范围内的字符都将被替换,string1 中的第 n 个字符被替换为 string2 中的第 n个字符。 

    eg: echo "adcfgh" | tr adcgw vbnle  // 将显示 vbnflh (v 替换 a,b 退回 d  ,n 替换 c,l 替换 g...) 

   2) 一般 string1 和 string2 的字符个数应该相同。如果字符个数不同,分为两种情况: 

     ① string1 的字符个数少于 string2 的字符个数: string2 种额外的字符将被忽略。  

     ② string1 的字符个数多于 string2 的字符个数,又可分为两种情况: 

      ·对于 BSD 系列的系统: tr 会重复 string2 中的最后一个字符,直到补齐到 string1 一样的长度。 

      ·对于 System V 的系统 : tr 将截去 string1 中超长的部分。 

       GUN tr 使用 BSD 方式,如果想使用 System V 方式,需要指定选项"-t"。 

       eg: echo "addcfghg" | tr  adcgw vbn     // 将打印 vbbnfnhn 

           echo "addcfghg" | tr  -t adcgw vbn  // 将打印 vbbnfghg 

   3) tr 的字符替换操作主要用途有 大小写转换等。 

      eg: tr [a-z] [A-Z] < video.txt  // 将文件 video.txt 中的所有小写字母转换成大写字母 

          tr ":" "\011" < /etc/passwd  // 将 passwd 文件的域分隔符改为"\011"即"TAB" 

 4.tr 用于删除字符: 使用选项"-d"。  

  1) Usage: tr -d string1  

   输入数据中所有在 string1 中出现过的字符都将被删除。 

  2) echo "This is a note !"| tr -d [:space:] // 将打印 Thisisanote  即删除所有空格  

     tr -cd "[a-z][A-Z][\n]"  <diary.txt  // 文件 diary.txt 中非字母或回车的字符都将被删除 

 5.tr 用于压缩重复字符: 使用选项"-s"。压缩操作可以单独进行,也可以在替换操作或删除操作之后进行,因而分成 3 种情况: 

  1) Usage: tr -s string1 

   输入数据中连续出现的字符,只有还在 string1 中出现过的,才会将被压缩成一个字符。 

   eg: echo "aaaccdefffgghhh"| tr -s adeg  // 将打印 accdefffghhh (string1 中无字符"cfh")  

       tr -s "\n" < plane.txt  // 删除文件 plane.txt 中的空行 (即压缩回车符) 

  2) Usage: tr -s string1 string2 

    string1 和 string2 用于替换操作,string2 还用于压缩操作。 

    eg: tr -s "[\015\032]" "[\012*]" <input_file  // 将文件 iput_file 从 dos 格式转换到 unix 格式 

  3) Usage: tr -ds string1 string2 

    string1 用于删除操作,string2 用于压缩操作。 

    eg: echo "aaaccdefffgghhh"| tr -ds adeg fh  // 将打印 ccfh 

       echo "aaaccdefffgghhh"| tr -d adeg      // 将打印 ccfffhhh

 6.在 tr 的替换操作中,如果 string1 使用了中括号"[ ]",那么 string2 也应该使用"[ ]"。 

 7.tr 主要用于字符转换或者抽取控制字符。tr 的大多数功能都可以用 sed 来完成,但有些人宁愿使用 tr,因为tr 更加快捷、容易。

相关阅读 更多 +
排行榜 更多 +
消防烈火英雄

消防烈火英雄

模拟经营 下载
医院急救模拟器

医院急救模拟器

模拟经营 下载
雷电觉醒安卓版

雷电觉醒安卓版

飞行射击 下载