新聞中心
tr的英文全稱(chēng)是“ transform ”,即轉(zhuǎn)換的意思。該命令的作用是一種可將字符進(jìn)行替換、壓縮、刪除,他可以將一組字符轉(zhuǎn)換成另一組字符。tr他只能從標(biāo)準(zhǔn)輸入中讀取數(shù)據(jù),因此,tr要么將輸入文件重定向到標(biāo)準(zhǔn)輸入,要么從管道讀入數(shù)據(jù)。

命令格式
tr [option] ["string1"] ["string2"]
常用的選項(xiàng)有:
默認(rèn)選項(xiàng)。就是沒(méi)有任何選項(xiàng)的時(shí)候,tr默認(rèn)為替換操作,就是將string1在文件中出現(xiàn)的字符替換為string2中的字符,這里要注意的是替換關(guān)系。 -c選項(xiàng),用string1中字符的補(bǔ)集替換string1,這里的字符集為ASCII。 -d選項(xiàng),刪除文件中所有在string1中出現(xiàn)的字符。 -s選項(xiàng),刪除文件中重復(fù)并且在string1中出現(xiàn)的字符,只保留一個(gè)。 -c選項(xiàng)在使用時(shí),只是將string1替換為現(xiàn)在的補(bǔ)集,如在使用
inuxidc@Ubuntu:~/linuxidc.com$ echo "hello world,linuxidc.com,2019" | tr -c "0-9" "*"
*************************2019*
tr文本處理命令的使用方法tr文本處理命令的使用方法
linuxidc@ubuntu:~/linuxidc.com$ echo "hello world,linuxidc.com,2019" | tr "0-9" "*"
hello world,linuxidc.com,****
可以看出,我們使用0-9,添加-c選項(xiàng)后,會(huì)把0-9替換為其補(bǔ)集,這時(shí)補(bǔ)集自然不包含0-9,而包含很多其它的字符,接下來(lái)就把所有的其它字符都替換成*號(hào),但不包含數(shù)字。
字符串的取值范圍
指定string或string2的內(nèi)容時(shí),只能使用單字符或字符串范圍或列表。 [a-z] a-z內(nèi)的字符組成的字符串。 [A-Z] A-Z內(nèi)的字符組成的字符串。 [0-9] 數(shù)字串。 \octal 一個(gè)三位的八進(jìn)制數(shù),對(duì)應(yīng)有效的ASCII字符。 [On] 表示字符O重復(fù)出現(xiàn)指定次數(shù)n。因此[O2]匹配OO的字符串。
控制字符的不同表達(dá)方式
速記符 含義 八進(jìn)制方式 \a Ctrl-G 鈴聲\007 \b Ctrl-H 退格符\010 \f Ctrl-L 走行換頁(yè)\014 \n Ctrl-J 新行\(zhòng)012 \r Ctrl-M 回車(chē)\015 \t Ctrl-I tab鍵\011
\v Ctrl-X \030 注意這些控制字符,如果想在linux下輸入,如我們可能需要輸入^M這種字符,只需ctrl+V+M同時(shí)按下即可。
字符替換
linuxidc@ubuntu:~/linuxidc.com$ echo "hello world,www.linuxidc.com" | tr "a-z" "A-Z"
HELLO WORLD,WWW.LINUXIDC.COM
linuxidc@ubuntu:~/linuxidc.com$ echo "hello world,www.linuxidc.com" | tr "a-l" "A-Z"
HELLo worLD,www.LInuxIDC.Com
linuxidc@ubuntu:~/linuxidc.com$ echo "hello world,www.linuxidc.com" | tr "a-z" "A-H"
HEHHH HHHHD,HHH.HHHHHHDC.CHH
第一行輸出就是將小寫(xiě)換成大寫(xiě)。 第二行輸出將小寫(xiě)中的a-l分別換成A-L,而將小寫(xiě)中的l以后的字符都不替換。 第三行輸出將小寫(xiě)中的a-h換成A-H,而h以后的字符都換成H,因?yàn)楹笳叩奶鎿Q空間沒(méi)有前面的字符空間大,所以就重復(fù)后面的H,相當(dāng)于后面的字符是A-HHH……HHHHH。
如果我們想要進(jìn)行大小寫(xiě)轉(zhuǎn)換,可以按下面的輸入:
tr "a-z" "A-Z"
去除重復(fù)字符
這個(gè)時(shí)候,所用的選項(xiàng)是-s選項(xiàng),如:
linuxidc@ubuntu:~/linuxidc.com$ echo "root,hello world,linuxidc.com" | tr -s "ao"
rot,hello world,linuxidc.com
linuxidc@ubuntu:~/linuxidc.com$ echo "root,hello world,linuxidc.com" | tr -s "lo"
rot,helo world,linuxidc.com
linuxidc@ubuntu:~/linuxidc.com$ echo "root,hello world,linuxidc.com" | tr -s "a-z"
rot,helo world,linuxidc.com
linuxidc@ubuntu:~/linuxidc.com$ echo "root,hello world,linuxidc.com" | tr -s "0-9"
root,hello world,linuxidc.com
第一行表示將輸入字符串中的包含在”ao”字符集中的重復(fù)字符去掉,只留一個(gè)。因?yàn)椤県ello world,linuxidc.com”,只有o滿(mǎn)足條件,所以將linuxidc.com變成rot,把中間的兩個(gè)o變成一個(gè)。 第二行將hello和linuxidc.com兩個(gè)字符都?jí)嚎s了。 第三行表示將a-z中的除復(fù)字符都去掉。 第三行表示將字符串中的重復(fù)的且重復(fù)字符在0-9字符集中的字符去掉,這里沒(méi)有。
如果我們想要去掉空行,可以這樣操作:
tr -s "\n" "\012"
就是將重復(fù)的換行符去掉,只留一個(gè)。
刪除字符
-d選項(xiàng)和-s選項(xiàng)類(lèi)似,只不過(guò)-d選項(xiàng)會(huì)刪除所有出現(xiàn)的字符。
linuxidc@ubuntu:~/linuxidc.com$ echo "root,hello world,linuxidc.com" | tr -d "a-h"
root,llo worl,linuxi.om
linuxidc@ubuntu:~/linuxidc.com$ echo "root,hello world,linuxidc.com,2019" | tr -d "a-z"
, ,.,2019
linuxidc@ubuntu:~/linuxidc.com$ echo "root,hello world,linuxidc.com,2019" | tr -d "0-9"
root,hello world,linuxidc.com,
新聞標(biāo)題:通過(guò)tr命令處理文本
網(wǎng)站URL:http://fisionsoft.com.cn/article/dhigiog.html


咨詢(xún)
建站咨詢(xún)
