linux中tr命令简介

1、关于tr
   通过使用 tr,您可以非常容易地实现 sed 的许多最基本功能。您可以将 tr 看作为 sed 的(极其)简化的变体:它可以用一个字符来替换另一个字符,或者可以完全除去一些字符。您也可以用它来除去重复字符。这就是所有 tr 所能够做的。
       tr用来从标准输入中通过替换或删除操作进行字符转换。tr主要用于删除文件中控制字符或进行字符转换。使用tr时要转换两个字符串:字符串1用于查询, 字符串2用于处理各种转换。tr刚执行时,字符串1中的字符被映射到字符串2中的字符,然后转换操作开始。
带有最常用选项的tr命令格式为:
tr -c -d -s ["string1_to_translate_from"] ["string2_to_translate_to"] < input-file
这里:
-c 用字符串1中字符集的补集替换此字符集,要求字符集为ASCII。
-d 删除字符串1中所有输入字符。
-s 删除所有重复出现字符序列,只保留第一个;即将重复出现字符串压缩为一个字符串。
input-file是转换文件名。虽然可以使用其他格式输入,但这种格式最常用。
2、字符范围
指定字符串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
3、应用例子
(1)去除oops.txt里面的重复的小写字符
tr -s "[a-z]"<oops.txt >result.txt
(2)删除空行
tr -s "[/012]" < plan.txt 或 tr -s ["/n"] < plan.txt
(3)有时需要删除文件中的^M,并代之以换行
tr -s "[/015]" "[/n]" < file 或 tr -s "[/r]" "[/n]" < file
(4)大写到小写
cat a.txt |tr "[a-z]" "[A-Z]" >b.txt
(5)删除指定字符
    一个星期的日程表。任务是从其中删除所有数字,只保留日期。日期有大写,也有小写格式。因此需指定两个字符范围[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
(6)转换控制字符
    tr的第一个功能就是转换控制字符,特别是从dos向UNIX下载文件时,忘记设置ftp关于回车换行转换的选项时更是如此。cat -v filename 显示控制字符。
    cat -v stat.txt
    box aa^^^^^12^M
    apple bbas^^^^23^M
    ^Z
猜想‘^ ^ ^ ^ ^ ^’是tab键。每一行以Ctrl-M结尾,文件结尾Ctrl-Z,以下是改动方法。
使用-s选项,查看ASCII表。^的八进制代码是136,^M是015,tab键是011,^Z是032 ,下面将按步骤完成最终功能。
用tab键替换^ ^ ^ ^ ^ ^,命令为"/136" "[/011*]"。将结果重定向到临时工作文件stat.tmp
tr -s "[/136]" "[/011*]" <stat.txt >stat.tmp
用新行替换每行末尾的^M,并用/n去除^Z,输入要来自于临时工作文件stat.tmp。
tr -s "[/015][/032]" "/n" <stat.tmp
要删除所有的tab键,代之以空格,使用命令
tr -s "[/011]" "[/040*]" <input.file
(7)替换passwd文件中所有冒号,代之以tab键,可以增加可读性
tr -s "[:]" "[/011]" < /etc/passwd 或 tr -s "[:]" "[/t]" < /etc/passwd
(8)使路径具有可读性
    如果用 echo $PATH 或者 echo $LD_LIBRARY_PATH 等类似的命令来显示路径信息的话,我们看到的将会是一大堆用冒号连接在一起的路径, tr命令可以把这些冒号转换为回车,这样,这些路径就具有很好的可读性了
echo $PATH | tr ":" "/n"
(9)可以在vi内使用所有这些命令!只要记住:在tr命令前要加上您希望处理的行范围和感叹号 (!),如 1,$!tr -d '/t'(美元符号表示最后一行)。
(10)另外,当有人给您发送了一个在 Mac OS 或 DOS/Windows 机器上创建的文本文件时,您会发现tr非常有用。
    如果没有将文件保存为使用  UNIX 换行符来表示行结束这种格式,则需要将这样的文件转换成本机 UNIX 格式,否则一些命令实用程序不会正确地处理这些文件。Mac OS  的行尾以回车字符(/r)结束,许多文本处理工具将这样的文件作为一行来处理。为了纠正这个问题,可以用下列技巧:
Mac -> UNIX:tr "/r" "/n"<macfile > unixfile
UNIX -> Mac:tr "/n" "/r"<unixfile > macfile
Microsoft DOS/Windows 约定,文本的每行以回车字符(/r)并后跟换行符(/n)结束。为了纠正这个问题,可以使用下列命令:
DOS -> UNIX:tr -d "/r"<dosfile > unixfile
UNIX -> DOS:在这种情况下,需要用awk,因为tr不能插入两个字符来替换一个字符。要使用的 awk 命令为 awk '{ print $0"/r" }'<unixfile > dosfile
注:都可以用sed 来完成。
### 回答1: tr命令Linux中的一个文本处理工具,用于对文本进行字符转换和替换操作。它可以将一个字符集中的字符替换为另一个字符集中的字符,也可以删除指定字符集中的字符。tr命令的基本语法为: tr [OPTION] SET1 [SET2] 其中,OPTION为可选参数,SET1为需要替换或删除的字符集,SET2为替换后的字符集。如果只指定SET1,则表示删除SET1中的字符。常用的选项包括: -c:取反,即替换SET1中没有出现的字符; -d:删除SET1中的字符; -s:压缩,即将SET1中连续出现的重复字符压缩为一个字符。 例如,将文件中的所有小写字母转换为大写字母: tr 'a-z' 'A-Z' < file.txt 将文件中的所有空格替换为下划线: tr ' ' '_' < file.txt 删除文件中的所有数字: tr -d '-9' < file.txt 压缩文件中的重复字符: tr -s 'a-z' < file.txt ### 回答2: Linux中的tr命令是一个十分强大且重要的命令,它主要用于对文本进行字符替换、删除或转换等操作。在Linux系统中,tr命令的用法和参数非常丰富,下面我们将详细介绍其常用的用法。 1.tr命令的基本语法 tr [option] set1 set2 其中,option为可选参数,set1和set2分别表示字符集1和字符集2。 2.tr命令的功能 tr命令的主要功能是对输入的字符集进行转换、删除、替换等操作。 3.tr命令的常用参数 (1)-d,表示删除字符 例如以下命令将从文本文件中删除所有的数字: $ cat file.txt | tr -d ‘0-9’ > newfile.txt (2)-s,表示压缩字符 例如以下命令将重复的字符压缩成一个字符: $ cat file.txt | tr -s ‘a’ ‘b’ > newfile.txt (3)-c,表示补全字符 例如以下命令将把除了a、b以外的其他字符都替换为’-‘: $ cat file.txt | tr -c ‘ab’ ‘-’ > newfile.txt (4)-t,表示删除字符 例如以下命令将把文本文件中的大写字母转换为小写字母: $ cat file.txt | tr -t ‘[:upper:]’ ‘[:lower:]’ > newfile.txt (5)-r,表示替换字符 例如以下命令将把文本文件中的a替换为b: $ cat file.txt | tr ‘a’ ‘b’ > newfile.txt 4.总结 以上便是Linuxtr命令的常用用法和参数。其中,tr命令十分有用,主要用于字符集的转换、删除、替换等操作,熟练掌握它的各种用法和参数,能够在Linux系统中快速、高效地完成各种文本处理任务。希望对大家有所帮助。 ### 回答3: tr命令是一个常见的Linux命令,可以用于转换或删除字符。tr命令的基本语法为:tr [OPTION]... SET1 [SET2]。其中,OPTION是可选的命令选项,SET1是要转换或删除的字符集合,SET2是用于替换字符集SET1的字符集合。 tr命令的一些常见选项和用法如下: 1. -d选项:删除指定字符,例如:tr -d 'aeiou'将删除输入文本中的所有元音字母。 2. -s选项:压缩字符集,例如:tr -s ' '将多余的空格压缩成一个空格。 3. -c选项:取反字符集,例如:tr -c 'a-z' '0-9'将所有非小写字母替换为数字。 4. SET选项:SET可以是字符范围或字符列表,例如:tr 'a-z' 'A-Z'将小写字母转换为大写字母。 5. SET1和SET2的长度不相等:如果SET1和SET2的长度不相等,tr命令会将SET1中的字符用SET2中的最后一个字符进行替换。例如:tr 'abc' '12'将'a'转换为'1','b'转换为'2','c'转换为'2'。 6. 文件重定向:tr命令还可以使用文件重定向,例如:tr 'a-z' 'A-Z' < input.txt > output.txt将input.txt中的小写字母转换为大写字母,并将结果输出到output.txt中。 总之,tr命令是一个非常有用的转换和删除字符的工具,可以轻松地完成一些文本处理任务。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值