时间:2022-10-31 09:31
linux系统下tr命令是什么呢?下面是具体介绍:
1、tr命令功能:
通过使用 tr,可以非常容易地实现 sed 的许多最基本功能您可以将 tr 看作为 sed 的(极其)简化的变体:它可以用一个字符来替换另一个字符,或者可以完全除去一些字符您也可以用它来除去重复字符这就是所有 tr 所能够做的。
tr用来从标准输入中通过替换或删除操作进行字符转换tr主要用于删除文件中控制字符或进行字符转换使用tr时要转换两个字符串:字符串1用于查询,字符串2用于处理各种转换tr刚执行时,字符串1中的字符被映射到字符串2中的字符,然后转换操作开始。
2、tr命令简介:
tr 命令从标准输入删除或替换字符,并将结果写入标准输出。根据由String1和String2变量指定的字符串以及指定的标志,tr 命令可执行三种操作。
转换字符:
如果String1和String2两者都已指定,但 -d 标志没有指定,那么 tr 命令就会从标准输入中将String1中所包含的每一个字符都替换成String2中相同位置上的字符。
使用 -d 标志删除字符:
如果 -d 标志已经指定,那么 tr 命令就会从标准输入中删除String1中包含的每一个字符。
用 -s 标志除去序列;
如果 -s 标志已经指定,那么 tr 命令就会除去包含在String1或String2中的任何字符串系列中的除第一个字符以外的所有字符。对于包含在String1中的每一个字符,tr 命令会从标准输出中除去除第一个出现的字符以外的所有字符。对于包含在String2中的每一个字符,tr 命令除去标准输出的字符序列中除第一个出现的字符以外的所有字符。
3、命令格式:
tr -c -d -s ["string1_to_translate_from"] ["string2_to_translate_to"] < input-file
-c 用字符串1中字符集的补集替换此字符集,要求字符集为ASCII
-d 删除字符串1中所有输入字符
-s 删除所有重复出现字符序列,只保留第一个;即将重复出现字符串压缩为一个字符串
input-file是转换文件名虽然可以使用其他格式输入,但这种格式最常用
4、字符范围:
指定字符串1或字符串2的内容时,只能使用单字符或字符串范围或列表
[a-z] a-z内的字符组成的字符串
[A-Z] A-Z内的字符组成的字符串
[0-9] 数字串
\octal 一个三位的八进制数,对应有效的ASCII字符
[O*n] 表示字符O重复出现指定次数n因此[O*2]匹配OO的字符串
tr中特定控制字符的不同表达方式
速记符含义八进制方式
\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
举例:
去除oops.txt里面的重复的小写字符
tr -s "[a-z]"<oops.txt >result.txt
删除空行
tr -s "[\012]" < plan.txt 或 tr -s ["\n"] < plan.txt
有时需要删除文件中的^M,并代之以换行
tr -s "[\015]" "[\n]" < file 或 tr -s "[\r]" "[\n]" < file
大写到小写
cat a.txt |tr "[a-z]" "[A-Z]" >b.txt
删除指定字符
一个星期的日程表任务是从其中删除所有数字,只保留日期日期有大写,也有小写格式因此需指定两个字符范围[a-z]和[A-Z],命令tr -cs "[a-z][A-Z]" "[\012*]" 将文件每行所有不包含在[a-z]或[A-Z](所有希腊字母)的字符串放在字符串1中并转换为一新行-s选项表明压缩所有新行, -c表明保留所有字母不动原文件如下,后跟tr命令:tr -cs "[a-z][A-Z]" "[\012*]" <diary.txt
以上就是小编今天的分享了,希望可以帮助到大家。