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
以上就是小编今天的分享了,希望可以帮助到大家。
Linux中的tr命令的常见使用示例
请关注本头条号,每天坚持更新原创干货技术文章。
如需学习视频,请在微信搜索公众号“智传网优”直接开始自助视频学习
Linux中的tr命令用于执行一组字符到另一组字符的简单但非常有用的转换。学习tr命令的一些实际示例。
tr命令中的tr代表翻译。这个实用的命令用于将一种类型的字符转换成另一种类型的字符。例如,如果希望将文本转换为所有大写或所有小写,可以使用tr命令。
tr命令对于简单快速的转换来说已经足够好了,但是它的能力还比不上awk或sed命令。
Linux中的tr命令的常见使用示例
tr命令有以下语法:
tr[options]charset1[charset2]
以下这些是tr命令的有用选项:
让我们看看如何在各种场合中使用tr命令及其选项。
tr命令最流行的用法之一是转换大小写。让我们首先使用cat命令来显示示例文件中的文本。
catsample.txt
Linux系统将小写字母转换为大写字母
ThisismylifeandmyFILE
现在,如果你想把文本转换成所有的大写字母,你需要做的是:
catsample.txt|tr'a-z''A-Z'
下面是命令执行后的输出结果:
catsample.txt|tr‘a-z’‘A-Z’
THISISMYLIFEANDMYFILE
你也可以在这里使用字符类:
catsample.txt|tr[:lower:][:upper:]
THISISMYLIFEANDMYFILE
即把小写字母变成大写字母
Linux系统把小写字母变成大写字母
要将文本转换成所有的小写字母,你只需要交换字符集:
catsample.txt|tr'A-Z''a-z'
Linux用一组字符替换另一组字符
在上面的示例中,您将小写字母转换为大写字母。同样,您可以将一组字符替换为另一组字符。匹配是在一个接一个的基础上完成的。
让我用这个例子来解释:
catsample.txt|tr‘ilm’‘tyz’
Thtstszyytfeandzyftye
转换结果如下:i>tm>zl>y
如果第二个集合比第一个集合小,则重复第二个集合的最后一个字符。换句话说,如果你用了tr ' ilm ' ' ty ',那么' l '和' m '就会被' y '取代。
此方法的一个实际示例是将()替换为{}或将下划线(_)替换为破折号(-)之类的东西。您还可以在Linux中以相同的方式将制表符(tabs)转换为空格。
如果你想删除一个或多个字符,你可以使用tr命令的-d选项:
catsample.txt|tr-d‘is’
Thmylfeandmyfle
在上面的例子中,' i '和' s '的所有实例都被删除了。如果你以为只有“is”会被删除,那么你错了。这就是为什么本文开始时提到,sed命令是一个更好的选择。
假设您的文本有多个空格,并且希望用单个空格替换多个空格。
原文件内容如下 :
echo“Texthastoomanyspaces”|tr-s”“
Texthastoomanyspaces
您还可以将一个字符的多次出现替换为另一个字符。例如,可以用分号(;)替换所有出现的空格。
echo“Texthastoomanyspaces”|tr-s””“;”
输出结果:
Text;has;too;many;spaces
假设您有文本,其中包含字母和数字,您希望只保留数字。您可以使用complementary选项-c并将其与delete选项-d组合使用。
把"Phone number is 123456789"中的非数字内容全部删除
echo“Phonenumberis123456789”|tr-cd[:digit:]
123456789
选项-t在截断搜索模式时很有用。假设第一组字符比第二组字符大。在这种情况下,第二个集合中的最后一个字符将替换第一个集合中的所有剩余字符。
让我用这个例子来解释一下:
catsample.txt|tr‘isef’’12’
Th1212myl122andmy21l2
在上面的例子中,“i”被替换为1,所有的s、e和f都被替换为2。如果使用truncate选项-t,它将截断' is '处的第一组字符,其余e和f将保持不变:
catsample.txt|tr-t‘isef’’12’
Th1212myl1feandmyf1le
即ef的替换不起作用了。
在Unix/Linux中还有许多其他的tr命令示例。本教程将解释一些使用tr命令的各种选项的示例。你可以运用你的想象力,把它们运用到各种各样的情况中去。
我希望本教程对您有所帮助。如果您有更好的案例,欢迎留言。
本文已同步至博客站,尊重原创,转载时请在正文中附带以下链接:https://www.linuxrumen.com/cyml/1679.html
点击了解更多,快速查看更多的技术文章列表。