可以把tr看作為乙個簡化的sed工具,tr表示為:translate。tr命令主要用於實現以下兩個功能
替換操作的字串轉換。
刪除操作的字串轉換,可以很容易的刪除一些控制字元或者是空行。
tr命令能夠實現的功能,都能夠用sed命令來實現。但就具體的替換功能來說,tr用起來更容易,也比較簡單。
一,命令格式
[html] view plaincopy
tr [option] ["string1"] ["string2"] < file
常用的選項有:
預設選項。就是沒有任何選項的時候,tr預設為替換操作,就是將string1在檔案中出現的字元替換為string2中的字元,這裡要注意的是替換關係。
-c選項,用string1中字元的補集替換string1,這裡的字符集為ascii。
-d選項,刪除檔案中所有在string1中出現的字元。
-s選項,刪除檔案中重複並且在string1中出現的字元,只保留乙個。
-c選項在使用時,只是將string1替換為現在的補集,如在使用
[html] view plaincopy
[root@localhost client]# echo "hello world,root,2012" | tr -c "0-9" "*"
*****************2012*
可以看出,我們使用0-9,新增-c選項後,會把0-9替換為其補集,這時補集自然不包含0-9,而包含很多其它的字元,接下來就把所有的其它字元都替換成*號,但不包含數字。
如果只需要替換數字的話:
[html] view plaincopy
[root@localhost client]# echo "hello world,root,2012" | tr "0-9" "*"
hello world,root,****
二,字串的取值範圍
指定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同時按下即可。
四,字元替換
這是tr的預設操作,先看下面的命令和輸出
[html] view plaincopy
[root@localhost client]# echo "hello world" | tr "a-z" "a-z"
hello world
[root@localhost client]# echo "hello world" | tr "a-l" "a-z"
hello world
[root@localhost client]# 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。
如果我們想要進行大小寫轉換,可以按下面的輸入:
[html] view plaincopy
tr "a-z" "a-z" < inputfile
五,去除重複字元
這個時候,所用的選項是-s選項,如:
[html] view plaincopy
[root@localhost client]# echo "hello world,root" | tr -s "ao"
hello world,rot
[root@localhost client]# echo "hello world,root" | tr -s "lo"
helo world,rot
[root@localhost client]# echo "hello world,root" | tr -s "a-z"
helo world,rot
[root@localhost client]# echo "hello world,root" | tr -s "0-9"
hello world,root
第一行表示將輸入字串中的包含在"ao"字符集中的重複字元去掉,只留乙個。因為"hello world,root",只有o滿足條件,所以將root變成rot,把中間的兩個o變成乙個。
第二行將hello和root兩個字元都壓縮了。
第三行表示將a-z中的除復字元都去掉。
第三行表示將字串中的重複的且重複字元在0-9字符集中的字元去掉,這裡沒有。
如果我們想要去掉空行,可以這樣操作:
[html] view plaincopy
tr -s "\n" < inputfile 或者 tr -s "\012" 六,刪除字元
-d選項和-s選項類似,只不過-d選項會刪除所有出現的字元。
[html] view plaincopy
[root@localhost client]# echo "hello world,root" | tr -d "a-h"
llo worl,root
[root@localhost client]# echo "hello world,root,2012" | tr -d "a-z"
,,2012
[root@localhost client]# echo "hello world,root,2012" | tr -d "0-9"
hello world,root,
tr命令用法
echo abcd tr a b bbcd 轉換字元。tr c cds cs c cds cs ds s a string1 string2 tr a string1 tr 命令從標準輸入刪除或替換字元,並將結果寫入標準輸出。根據由 string1 和 string2 變數指定的字串以及指定的標誌,...
mac的 tr命令 tr命令使用
tr translate or delete characters 命令 tr option set1 set2 引數 c,complement 反選設定字元。也就是符合 set1 的部份不做處理,不符合的剩餘部份才進行轉換 d,delete 刪除指令字元 s,squeeze repeats 縮減連...
tr的詳細用法
例 tr a a test.c 把檔案test.c中所有小寫a變化成大寫a 1 關於tr 通過使用 tr,您可以非常容易地實現 sed 的許多最基本功能。您可以將 tr 看作為 sed 的 極其 簡化的變體 它可以用乙個字元來替換另乙個字元,或者可以完全除去一些字元。您也可以用它來除去重複字元。這就...