Linux下的tr编辑器命令详解
?通過使用 tr,您可以非常容易地實現 sed 的許多最基本功能。您可以將 tr 看作為 sed 的(極其)簡化的變體:它可以用一個字符來替換另一個字符,或者可以完全除去一些字符。您也可以用它來除去重復字符。這就是所有 tr 所能夠做的。?
命令格式
tr [option] ["string1"] ["string2"] < file??
常用的選項有:
默認選項。就是沒有任何選項的時候,tr默認為替換操作,就是將string1在文件中出現的字符替換為string2中的字符,這里要注意的是替換關系。
-c選項,用string1中字符的補集替換string1,這里的字符集為ASCII。
-d選項,刪除文件中所有在string1中出現的字符。
-s選項,刪除文件中重復并且在string1中出現的字符,只保留一個。
-c選項在使用時,只是將string1替換為現在的補集,如在使用
可以看出,我們使用0-9,添加-c選項后,會把0-9替換為其補集,這時補集自然不包含0-9,而包含很多其它的字符,接下來就把所有的其它字符都替換成*號,但不包含數字。
字符串的取值范圍
指定string或string2的內容時,只能使用單字符或字符串范圍或列表。
[a-z] a-z內的字符組成的字符串。
[A-Z] A-Z內的字符組成的字符串。
[0-9] 數字串。
\octal 一個三位的八進制數,對應有效的ASCII字符。
[O*n] 表示字符O重復出現指定次數n。因此[O*2]匹配OO的字符串。
控制字符的不同表達方式
速記符?含義?八進制方式
\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 注意這些控制字符,如果想在linux下輸入,如我們可能需要輸入^M這種字符,只需ctrl+V+M同時按下即可。
字符替換
[root@localhost ~]# echo "hello world" | tr "a-z" "A-Z" HELLO WORLD [root@localhost ~]# echo "hello world" | tr "a-l" "A-Z" HELLo worLD [root@localhost ~]# echo "hello world" | tr "a-z" "A-H" HEHHH HHHHD第一行輸出就是將小寫換成大寫。
第二行輸出將小寫中的a-l分別換成A-L,而將小寫中的l以后的字符都不替換。
第三行輸出將小寫中的a-h換成A-H,而h以后的字符都換成H,因為后者的替換空間沒有前面的字符空間大,所以就重復后面的H,相當于后面的字符是A-HHH......HHHHH。
如果我們想要進行大小寫轉換,可以按下面的輸入:
tr "a-z" "A-Z" < inputfile??
去除重復字符
這個時候,所用的選項是-s選項,如:
第一行表示將輸入字符串中的包含在"ao"字符集中的重復字符去掉,只留一個。因為"hello world,root",只有o滿足條件,所以將root變成rot,把中間的兩個o變成一個。
第二行將hello和root兩個字符都壓縮了。
第三行表示將a-z中的除復字符都去掉。
第三行表示將字符串中的重復的且重復字符在0-9字符集中的字符去掉,這里沒有。
如果我們想要去掉空行,可以這樣操作:
tr -s "\n" < inputfile 或者 tr -s "\012" <inputfile // 這兩個是一樣的。??
就是將重復的換行符去掉,只留一個。
刪除字符
-d選項和-s選項類似,只不過-d選項會刪除所有出現的字符。
總結
以上是生活随笔為你收集整理的Linux下的tr编辑器命令详解的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: bfs解救小哈
- 下一篇: HBase API 详细例子(封装的DA