Linux命令學習手冊 tr命令

2021-06-27 18:41:33 字數 3293 閱讀 2834

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...