tr用来从标准输入中通过替换或删除操作进行字符转换。tr主要用于删除文件中控制字符或进行字符转换。使用t r时要转换两个字符串:字符串1用于查询,字符串2用于处理各种转换。tr刚执行时,字符串1中的字符被映射到字符串2中的字符,然后转换操作开始。
常用格式:tr [-c -d -s] [string_translate_from] [string_translate_to] input_file
选项含义:
-c :用字符串from的补集替换此字符集(须为ASCII)
-d: 删除字符串from中的所有输入字符
-s: 删除所有重复序列,只保留第一个
二、tr命令用法
保存输出(即将输出结果保存至文件中,利用重定向):tr -s "[a-z]" < input_file > save_file
去除重复字符:tr -s "[a-z]" < input_file 或者 cat input_file | tr -s "[a-z]"
删除空行:tr -s "[\012]" < input_file,其实用sed也很简单,这里\012是换行的八进制表示,因此也可以这样:tr -s "\n" < input_file
大小写转换:echo "testTESTHERE,ENd" | tr "[a-z]" "[A-Z]",将文本中大写转为小写并保存:cat file | tr "[A-Z]" "[a-z]" > result_file,小写转为大写类似.
删除指定字符:tr -cs "[a-z] [A-Z]" "[\n*]" < input_file #将文件中每行不包含在【a-z】或者【A-Z】的字符串放在字符串from中并转换为新的一行
转换指定字符:使用-s选项,如: tr -s "[\136]" "[\011*]" < input_file > result.tmp ,这里^的八进码代表是136,^M的代表是015,tab的代表码是011,^Z的八进制码是032,
有时在windows下写的一些脚本放到linux中去运行是会报一些有关字符表示的错误,因此这里的命令就是很有用的:tr -s "[\015\032]" "\n" < input_file,用“\n”替换“^M”和“^Z”
,再如,要删除文件中的“^M”,并用换行代替: tr -s "[\015]" "\n" < input_file 或者 tr -s "\r" "\n" < input_file
一般的dos转unix格式命令(经常用到):tr -s "[\015\032]" "[\012*]" < input_file