linux中字元轉換命令 tr的用法

2021-08-27 09:46:36 字數 3039 閱讀 5404

可以把tr看作為乙個簡化的sed工具,tr表示為:translate。tr命令主要用於實現以下兩個功能

替換操作的字串轉換。

刪除操作的字串轉換,可以很容易的刪除一些控制字元或者是空行。

tr命令能夠實現的功能,都能夠用sed命令來實現。但就具體的替換功能來說,tr用起來更容易,也比較簡單。

一,命令格式

tr [option] ["string1"] ["string2"] < file
常用的選項有:

預設選項。就是沒有任何選項的時候,tr預設為替換操作,就是將string1在檔案中出現的字元替換為string2中的字元,這裡要注意的是替換關係。

-c選項,用string1中字元的補集替換string1,這裡的字符集為ascii。

-d選項,刪除檔案中所有在string1中出現的字元。

-s選項,刪除檔案中重複並且在string1中出現的字元,只保留乙個。

-c選項在使用時,只是將string1替換為現在的補集,如在使用

[root@localhost client]# echo "hello world,root,2012" | tr -c "0-9" "*"

*****************2012*

可以看出,我們使用0-9,新增-c選項後,會把0-9替換為其補集,這時補集自然不包含0-9,而包含很多其它的字元,接下來就把所有的其它字元都替換成*號,但不包含數字。

如果只需要替換數字的話:

[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的字串。

三,控制字元的不同表達方式

速記符含義八進位制方式

\actrl-g

鈴聲\007

\bctrl-h

退格符\010

\fctrl-l

走行換頁\014

\nctrl-j

新行\012

\rctrl-m

回車\015

\tctrl-i

tab鍵\011

\vctrl-x

\030

注意這些控制字元,如果想在linux下輸入,如我們可能需要輸入^m這種字元,只需ctrl+v+m同時按下即可。

四,字元替換

這是tr的預設操作,先看下面的命令和輸出

[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。

如果我們想要進行大小寫轉換,可以按下面的輸入:

tr "a-z" "a-z" < inputfile

五,去除重複字元

這個時候,所用的選項是-s選項,如:

[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字符集中的字元去掉,這裡沒有。

如果我們想要去掉空行,可以這樣操作:

tr -s "\n" < inputfile 或者 tr -s "\012" -d選項和-s選項類似,只不過-d選項會刪除所有出現的字元。

[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,

Linux 字元轉換命令tr

tr traslate的縮寫 可以用來刪除一段資訊當中的文字,或者是進行文字資訊的替換!root www tr ds set1 選項與引數 d 刪除資訊當中的 set1 這個字串 s 取代掉重複的字元!範例一 將 last 輸出的資訊中,所有的小寫變成大寫字元 root www last tr a ...

linux中字元轉換命令 tr的用法

linux中字元轉換命令 tr的用法 可以把tr看作為乙個簡化的sed工具,tr表示為 translate。tr命令主要用於實現以下兩個功能 替換操作的字串轉換。刪除操作的字串轉換,可以很容易的刪除一些控制字元或者是空行。tr命令能夠實現的功能,都能夠用sed命令來實現。但就具體的替換功能來說,tr...

Linux命令學習 tr 轉換字元

語法 tr options source char list replace char list 用途 轉換字元。例如,將大寫字元轉換為小寫。選項可讓你指定所要刪除的字元,以及將一串重複出現的字元濃縮成乙個。常用選項 c 取source char list的反義 d 刪除source char li...