tr 命令用法

2021-06-28 01:43:28 字數 3151 閱讀 6838

可以把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 的 極其 簡化的變體 它可以用乙個字元來替換另乙個字元,或者可以完全除去一些字元。您也可以用它來除去重複字元。這就...