tr [option]... set1 [set2]
[功能]
轉換或者刪除字元。
[描述]
tr指令從標準輸入裝置讀取資料,經過字串轉譯後,輸出到標準輸出裝置。
通過使用 tr,您可以非常容易地實現 sed 的許多最基本功能。您可以將 tr 看作為 sed 的(極其)簡化的變體:它可以用乙個字元來替換另乙個字元,或者可以完全除去一些字元。您也可以用它來除去重複字元。這就是所有 tr 所能夠做的。
tr用來從標準輸入中通過替換或刪除操作進行字元轉換。tr主要用於刪除檔案中控制字元或進行字元轉換。使用tr時要轉換兩個字串:字串1用於查詢,字串2用於處理各種轉換。tr剛執行時,字串1中的字元被對映到字串2中的字元,然後轉換操作開始。
引數:
-c或--complerment 取代所有不屬於第一字符集的字元。
-d或--delete 刪除所有屬於第一字符集的字元。
-s或--squeeze-repeats 把連續重複的字元以單獨乙個字元表示。
-t或--truncate-set1 這個比較難理解,man上面的解釋是:first truncate set1 to length of set2,經過我的實踐發現,將set1的字元依次替換成set2中的字元,如果set1中的字元數目超過set2,那麼set1多出的字元忽略。如果沒有-t,那麼多出的字元都替換成set2的最後乙個字元。
--version 顯示版本資訊。
字元範圍
指定字串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
[舉例]
*壓縮檔案test內容中重複的字元為乙個:
$tr -s [a-z]
這樣,會把檔案中每一行的,set1([a-z])字串中的重複字元壓縮為乙個,並把處理的結果列印到標準輸出,原來的檔案不變。
注意這裡,set1集合(也就是第乙個引數[a-z])中指定的是字元集合,而不是字串,所以這裡做的是把單個字元的重複給壓縮為乙個,而不是字串的重複。
例如test有一行是tttt.tgz,那麼會變成t.tgz,但是hellohellohello會變成helohelohelo.
*去掉檔案中多餘的空行:
$tr -s "[\012]" < test
或$tr -s ["\n"]
這裡,假設原來檔案test的內容是:
111
222
333
444
執行之後,標準輸出:
111
222
333
444
而原來檔案的內容不會改變。
*刪除檔案中的^m,並代之以換行:
$tr -s "[\015]" "[\n]"
或$tr -s "[\r]" "[\n]
一般來說,windows上面編輯的檔案拿到linux上面來沒行的結尾可以會有這樣的符號,實際上直接cat也看不出^m符號。
*替換檔案test中所有冒號,代之以逗號:
$tr -s "[:]" "[,]"
或$tr -s ":" ","
*顯示$path變數將":"變成回車:
echo $path | tr ":" "\n"
這裡,用 echo $path 或者 echo $ld_library_path 等類似的命令來顯示路徑資訊的話,我們看到的將會是一大堆用冒號連線在一起的路徑, tr命令可以把這些冒號轉換為回車,這樣,這些路徑就具有很好的可讀性了.
*以上命令在vi中進行處理:
1,$!tr -s ":" ","
這樣,會直接修改vi編輯的檔案,可以在vi內使用所有這些命令!只要記住:在tr命令前要加上您希望處理的行範圍和感嘆號 (!),如 1,$!tr -d '\t'(美元符號表示最後一行)。
*替換第乙個引數字符集之外的字元為指定字元:
tr -c [boy] "k"
輸入之後,輸出如下:
kkkkokboykkookk
這裡,會把屬於第乙個引數的字符集中的字元之外的所有,都替換成第二個引數對應的字元。第二個引數必須是單個字元,如果是多個字元,則取最後乙個,例如"ka"等價於'a'.
使用"cat trtest"檢視檔案的內容如下:
hello
boy
good
*刪除set1字符集指定的字元:
$tr -d bld
或$tr -d [bld]
輸入之後,輸出如下:
heo
oy goo
這樣,會刪除trtest檔案中的所有"bld"三個字元。這裡使用cat檢視trtest檔案內容如下:
$cat trtest
hello
boy
good
*把檔案中的小寫字元轉換成大寫的:
$tr a-z a-z
或$tr [a-z] [a-z]
輸入之後,輸出如下:
111
222
hello
這裡,testtr內容如下:
111
222
hello
*使用-t替換字元,set1超出set2的部分忽略:
$tr -t hld boy < trtest
輸入之後,輸出如下:
beooo
boy
gooy
這樣,會依次把h,l,d替換成b,o,y如果是hldg那麼多出來的字元g忽略,如果沒有-t那麼多出來的所有字元被替換成boy的最後乙個字元y.
這裡trtest檔案的內容:
$cat trtest
hello
boy
go
Linux命令學習手冊 tr命令
tr option set1 set2 功能 轉換或者刪除字元。描述 tr指令從標準輸入裝置讀取資料,經過字串轉譯後,輸出到標準輸出裝置。通過使用 tr,您可以非常容易地實現 sed 的許多最基本功能。您可以將 tr 看作為 sed 的 極其 簡化的變體 它可以用乙個字元來替換另乙個字元,或者可以完...
Linux命令學習 tr 轉換字元
語法 tr options source char list replace char list 用途 轉換字元。例如,將大寫字元轉換為小寫。選項可讓你指定所要刪除的字元,以及將一串重複出現的字元濃縮成乙個。常用選項 c 取source char list的反義 d 刪除source char li...
Linux命令學習手冊 head命令
head option file 功能 列印檔案的開頭部分。描述 預設head命令列印其相應檔案的開頭10行。舉例 檢視的測試檔案內容 root lv k samba cat smb.conf global workgroup my group server string mysamba netbi...