shell基础十二:tr

关于tr
t r用来从标准输入中通过替换或删除操作进行字符转换。t r主要用于删除文件中控制字符或进行字符转换。使用t r时要转换两个字符串:字符串1用于查询,字符串2用于处理各种转换。
t r刚执行时,字符串1中的字符被映射到字符串2中的字符,然后转换操作开始。

下面讲述:

 

QUOTE:
" 大小写转换。
" 去除控制字符。
" 删除空行。




带有最常用选项的t r命令格式为:

  1. t r - c - d - s [ " s t r i n g 1 _ t o _ t r a n s l a t e _ f r o m " ] [ " s t r i n g 2 _ t o _ t r a n s l a t e _ t o " ] i n p u t _f i l e



这里:

 

QUOTE:
-c 用字符串1中字符集的补集替换此字符集,要求字符集为A S C I I。
-d 删除字符串1中所有输入字符。
-s 删除所有重复出现字符序列,只保留第一个;即将重复出现字符串压缩为一个字符串。



I n p u t - f i l e是转换文件名。虽然可以使用其他格式输入,但这种格式最常用。

字符范围
使用t r时,可以指定字符串列表或范围作为形成字符串的模式 。这看起来很像正则表达式,但实际上不是。指定字符 串1或字符串2的内容时,只能使用单字符或字符串范围或列表。

 

QUOTE:
[a-z] a-z内的字符组成的字符串。
[A-Z] A-Z内的字符组成的字符串。
[0-9] 数字串。
/octal 一个三位的八进制数,对应有效的A S C I I字符。
[O*n] 表示字符O重复出现指定次数n。因此[ O * 2 ]匹配O O的字符串。
大部分t r变种支持字符类和速记控制字符。
字符类格式为[:c l a s s ],包含数字、希腊字母、空行、小写、大写、c n t r l键、空格、点记符、图形等等。




下表包括最常用的控制字符的速记方式及三位八进制引用方式。
当用一个单字符替换一个字符串或字符范围时,注意字符并不放在方括号里( [ ])。一些系统 也可以使用方括号,例如可以写成[“\ 0 1 2”]或“\ 0 1 2”,t r也允许不加引号,因此命令中看到单引号而不是双引号时也不要感到奇怪。
像大多数系统工具一样, t r也受特定字符的影响。因此如果要匹配这些字符,需使用反斜线屏蔽其特殊含义。例如,用\ {指定花括号左边可以屏蔽其特殊含义。

tr中特定控制字符的不同表达方式

  1. 速记符含义八进制方式
  2. \ a Ctrl-G 铃声\ 0 0 7
  3. \ b Ctrl-H 退格符\ 0 1 0
  4. \f Ctrl-L 走行换页\ 0 1 4
  5. \n Ctrl-J 新行\ 0 1 2
  6. \ r Ctrl-M 回车\ 0 1 5
  7. \t Ctrl-I tab键\ 0 11
  8. \ v Ctrl-X \ 0 3 0

去除重复出现的字符
下面文件包含了一些打印错误。这种情况时常发生,例如在v i编辑器中,偶尔按住一个键不放。

  1. [sam@chenwy split]$ cat opps.txt
  2. And the cowwwwws went homeeeeeeeeeeeee
  3. Or did theyyyyyyyyyyyyy



如果要去除重复字母或将其压缩在一起,使用- s选项。因为都是字母,故使用[ a - z ]。输入文件重定向到t r命令。
  1. [sam@chenwy split]$ tr -s "[a-z]" < opps.txt
  2. And the cows went home
  3. Or did they



所有重复字符被压缩成一个。如果使用c a t命令,再将结果管道输出至t r,结果是一样的。
  1. [sam@chenwy split]$ cat opps.txt | tr -s "[a-z]"
  2. And the cows went home
  3. Or did they



删除空行
要删除空行,可将之剔出文件。下面是一个文件p l a n e . t x t。文本间有许多空行。

阅读全文>>

你可能感兴趣的:(shell基础十二:tr)