Linux shell tr 命令详解
Linuxshelltr命令详解
1.用途
tr,translate的简写,主要用于压缩重复字符,删除文件中的控制字符以及进行字符转换操作。
2.语法
tr[OPTION]...SET1[SET2]
3.参数
3.1-s压缩重复字符
-s:squeeze-repeats,用SET1指定的字符来替换对应的重复字符(replaceeachinputsequenceof a repeated character that islistedinSET1withasingleoccurrenceofthatcharacter)
xiaosi@Qunar:~/test$echo"aaabbbaacccfddd"|tr-s[abcdf]//abacfd
可以使用这一特点,删除文件中的空白行,实质上跟上面一样,都是用SET1指定的字符来替换对应的重复字符
xiaosi@Qunar:~/test$catb.txt Ilikefootball Footballisveryfun! Hello xiaosi@Qunar:~/test$catb.txt|tr-s["\n"] Ilikefootball Footballisveryfun! Hello
3.2-d删除字符
-d:delete,删除SET1中指定的所有字符,不转换(deletecharactersinSET1,donottranslate)
xiaosi@Qunar:~/test$echo"a12HJ13fdaADff"|tr-d"[a-z][A-Z]" 1213 xiaosi@Qunar:~/test$echo"a1213fdasf"|tr-d[adfs] 1213
3.3字符替换
-t:truncate,将SET1中字符用SET2对应位置的字符进行替换,一般缺省为-t
xiaosi@Qunar:~/test$echo"a1213fdasf"|tr-t[afd][AFO]//A1213FOAsF
上述代码将a转换为A,f转换为F,d转换为O。
可以利用这一特点,实现大小字母的转换
xiaosi@Qunar:~/test$echo"HelloWorldILoveYou"|tr-t[a-z][A-Z] HELLOWORLDILOVEYOU xiaosi@Qunar:~/test$echo"HELLOWORLDILOVEYOU"|tr-t[A-Z][a-z] helloworldiloveyou
也可以利用字符集合进行转换
xiaosi@Qunar:~/test$echo"HelloWorldILoveYou"|tr-t[:lower:][:upper:] HELLOWORLDILOVEYOU xiaosi@Qunar:~/test$echo"HELLOWORLDILOVEYOU"|tr-t[:upper:][:lower:] helloworldiloveyou
备注:
字符集合如下
\NNN八进制值的字符NNN(1to3为八进制值的字符) \\反斜杠 \aCtrl-G铃声 \bCtrl-H退格符 \fCtrl-L走行换页 \nCtrl-J新行 \rCtrl-M回车 \tCtrl-Itab键 \vCtrl-X水平制表符 CHAR1-CHAR2从CHAR1到CHAR2的所有字符按照ASCII字符的顺序 [CHAR*]inSET2,copiesofCHARuntillengthofSET1 [CHAR*REPEAT]REPEATcopiesofCHAR,REPEAToctalifstartingwith0 [:alnum:]所有的字母和数字 [:alpha:]所有字母 [:blank:]水平制表符,空白等 [:cntrl:]所有控制字符 [:digit:]所有的数字 [:graph:]所有可打印字符,不包括空格 [:lower:]所有的小写字符 [:print:]所有可打印字符,包括空格 [:punct:]所有的标点字符 [:space:]所有的横向或纵向的空白 [:upper:]所有大写字母
3.4字符补集替换
-c:complement,用SET2替换SET1中没有包含的字符
xiaosi@Qunar:~/test$cata.txt Monday09:00 Tuesday09:10 Wednesday10:11 Thursday11:30 Friday08:00 Saturday07:40 Sunday10:00 xiaosi@Qunar:~/test$cata.txt|tr-c"[a-z][A-Z]""#"|tr-s"#"|tr-t"#""\n" Monday Tuesday Wednesday Thursday Friday Saturday Sunday
上面代码中tr-c"[a-z][A-Z]""#"表示将除大小字母以外的所有的字符都替换为#。
上面代码可优化为:
xiaosi@Qunar:~/test$cata.txt|tr-cs"[a-z][A-Z]""\n" Monday Tuesday Wednesday Thursday Friday Saturday Sunday
感谢阅读,希望嫩帮助到大家,谢谢大家对本站的支持!