Linux下tr命令详解,替换删除字符

日期:2019-09-07编辑作者:系统操作

tr是translate的简写,通过那一个单词,你大约也能猜到它是为何的了呢!没有错,它能够用一个字符串来替换另叁个字符串,大概能够完全除去一些字符。您也能够用它来除去重复字符。
 
   tr用来从行业内部输入中通过轮换或删除操作举办字符调换。tr首要用来删除文件中央调整制字符或开展字符调换。使用tr时要转移多个字符串:字符串1用于查询, 字符串2用于拍卖各样转变。即用字符串2替换掉字符串1。字符串1得以使正则表达式。纵然字符串2为空或尚未列出,则是开展删除操作,那几个很好掌握,用空字符串替换字符串1理所必然就一定于删除字符串1啊!
 
    补充某个,tr的功效都足以用sed 来产生。您能够将tr 看作为sed 的(特别)简化的变体。
 
富含最常用选项的tr命令格式为:
tr -c -d -s ["string1_to_translate_from"] ["string2_to_translate_to"]
这里:
-c 用字符串1中字符集的补集替换此字符集,供给字符集为ASCII。
-d 删除字符串1中全部输入字符。
-s 删除全部重复出现字符连串,只保留第三个;将要重新出现字符串压缩为一个字符串。
 
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  铃声07
b Ctrl-H  退格符10
f Ctrl-L  走行换页14
n Ctrl-J  新行12
r Ctrl-M  回车15
t Ctrl-I  tab键11
v Ctrl-X  30
 
3、应用例子
(1)去除oops.txt里面包车型地铁重新的小写字符
tr -s "[a-z]"<oops.txt >result.txt
(2)删除空行
tr -s "[12]" < plan.txt 或tr -s ["n"] < plan.txt
(3)有的时候须求删除文件中的^M,并代之以换行
tr -s "[15]" "[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]" "[12*]" 将文件每行全数不含有在[a-z]或[A-Z](全体希腊语(Greece)字母)的字符串放在字符串第11中学并调换为一新行。-s选项申明压缩全部新行,-c申明保留全体字母不动。原版的书文件如下,后跟tr命令:
tr -cs "[a-z][A-Z]" "[12*]" <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" "[11*]"。将结果重定向到不经常专门的学业文件stat.tmp
tr -s "[136]" "[11*]" <stat.txt >stat.tmp
用新行替换每行末尾的^M,并用n去除^Z,输入要来自于有时专门的职业文件stat.tmp。
tr -s "[15][32]" "n" <stat.tmp
要删减全数的tab键,代之以空格,使用命令
tr -s "[11]" "[40*]" <input.file
(7)替换passwd文件中持有冒号,代之以tab键,能够扩张可读性
tr -s "[:]" "[11]" < /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

1、关于tr
   通过使用 tr,您可以极其轻松地贯彻 sed 的多多最基本作用。您能够将 tr 看作为 sed 的(非常)简化的变体:它能够用一个字符来替换另贰个字符,恐怕能够完全除去一些字符。您也能够用它来除去重复字符。那就是具有tr 所能够做的。
       tr用来从职业输入中通过轮换或删除操作实行字符转变。tr首要用于删除文件中央调整制字符或进行字符转换。使用tr时要转变七个字符串:字符串1用来查询, 字符串2用以拍卖各类调换。tr刚实行时,字符串第11中学的字符被映射到字符串2中的字符,然后转变操作起来。
包括最常用选项的tr命令格式为:
tr -c -d -s ["string1_to_translate_from"] ["string2_to_translate_to"] < input-file
这里:
-c 用字符串第11中学字符集的补集替换此字符集,供给字符集为ASCII。
-d 删除字符串第11中学有着输入字符。
-s 删除全部重复出现字符系列,只保留第贰个;将在重新出现字符串压缩为贰个字符串。
input-file是改换文件名。固然能够选拔任何格式输入,但这种格式最常用。

摘自 andy572633的专栏

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  铃声07
b Ctrl-H  退格符10
f Ctrl-L  走行换页14
n Ctrl-J  新行12
r Ctrl-M  回车15
t Ctrl-I  tab键11
v Ctrl-X  30

...

3、应用例子
(1)去除oops.txt里面包车型地铁再次的小写字符
tr -s "[a-z]"<oops.txt >result.txt
(2)删除空行
tr -s "[12]" < plan.txt 或 tr -s ["n"] < plan.txt
(3)偶然须要删除文件中的^M,并代之以换行
tr -s "[15]" "[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]" "[12*]" 将文件每行全数不包蕴在[a-z]或[A-Z](全部希腊(Ελλάδα)字母)的字符串放在字符串1中并转换为一新行。-s选项注脚压缩全部新行, -c注解保留全部字母不动。原来的小说件如下,后跟tr命令:
tr -cs "[a-z][A-Z]" "[12*]" <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" "[11*]"。将结果重定向到有的时候职业文件stat.tmp
tr -s "[136]" "[11*]" <stat.txt >stat.tmp
用新行替换每行末尾的^M,并用n去除^Z,输入要来自于不时职业文件stat.tmp。
tr -s "[15][32]" "n" <stat.tmp
要去除全部的tab键,代之以空格,使用命令
tr -s "[11]" "[40*]" <input.file

(7)替换passwd文件中具备冒号,代之以tab键,能够扩展可读性
tr -s "[:]" "[11]" < /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 来成功。

本文由今晚最快开奖现场直播发布于系统操作,转载请注明出处:Linux下tr命令详解,替换删除字符

关键词: