學(xué)習(xí)啦>學(xué)習(xí)電腦>操作系統(tǒng)>Linux教程>

Linux系統(tǒng)中文本操作命令tr怎么使用

時(shí)間: 春健736 分享

  tr命令可以用來(lái)對(duì)文本進(jìn)行壓縮刪除以及替換等多種操作,十分強(qiáng)大,下面學(xué)習(xí)啦小編介紹了Linux系統(tǒng)中文本操作命令tr的使用講解,希望大家喜歡。

  Linux系統(tǒng)中文本操作命令tr怎么使用

  linux:tr的命令用法

  可以把tr看作為一個(gè)簡(jiǎn)化的sed工具,tr表示為:translate。tr命令主要用于實(shí)現(xiàn)以下兩個(gè)功能

  替換操作的字符串轉(zhuǎn)換。

  刪除操作的字符串轉(zhuǎn)換,可以很容易的刪除一些控制字符或者是空行。

  tr命令能夠?qū)崿F(xiàn)的功能,都能夠用sed命令來(lái)實(shí)現(xiàn)。但就具體的替換功能來(lái)說(shuō),tr用起來(lái)更容易,也比較簡(jiǎn)單。

  一,命令格式

  [html]

  tr [option] ["string1"] ["string2"] < file

  常用的選項(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ǔ)集,如在使用

  C代碼

  [html]

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

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

  可以看出,我們使用0-9,添加-c選項(xiàng)后,會(huì)把0-9替換為其補(bǔ)集,這時(shí)補(bǔ)集自然不包含0-9,而包含很多其它的字符,接下來(lái)就把所有的其它字符都替換成*號(hào),但不包含數(shù)字。

  如果只需要替換數(shù)字的話:

  C代碼

  [html]

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

  hello world,root,****

  二,字符串的取值范圍

  指定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字符。

  [O*n] 表示字符O重復(fù)出現(xiàn)指定次數(shù)n。因此[O*2]匹配OO的字符串。

  三,控制字符的不同表達(dá)方式

  速記符 含義 八進(jìn)制方式

  \a Ctrl-G 鈴聲

Linux系統(tǒng)中文本操作命令tr怎么使用

時(shí)間: 春健736 分享

  tr命令可以用來(lái)對(duì)文本進(jìn)行壓縮刪除以及替換等多種操作,十分強(qiáng)大,下面學(xué)習(xí)啦小編介紹了Linux系統(tǒng)中文本操作命令tr的使用講解,希望大家喜歡。

  Linux系統(tǒng)中文本操作命令tr怎么使用

  linux:tr的命令用法

  可以把tr看作為一個(gè)簡(jiǎn)化的sed工具,tr表示為:translate。tr命令主要用于實(shí)現(xiàn)以下兩個(gè)功能

  替換操作的字符串轉(zhuǎn)換。

  刪除操作的字符串轉(zhuǎn)換,可以很容易的刪除一些控制字符或者是空行。

  tr命令能夠?qū)崿F(xiàn)的功能,都能夠用sed命令來(lái)實(shí)現(xiàn)。但就具體的替換功能來(lái)說(shuō),tr用起來(lái)更容易,也比較簡(jiǎn)單。

  一,命令格式

  [html]

  tr [option] ["string1"] ["string2"] < file

  常用的選項(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ǔ)集,如在使用

  C代碼

  [html]

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

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

  可以看出,我們使用0-9,添加-c選項(xiàng)后,會(huì)把0-9替換為其補(bǔ)集,這時(shí)補(bǔ)集自然不包含0-9,而包含很多其它的字符,接下來(lái)就把所有的其它字符都替換成*號(hào),但不包含數(shù)字。

  如果只需要替換數(shù)字的話:

  C代碼

  [html]

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

  hello world,root,****

  二,字符串的取值范圍

  指定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字符。

  [O*n] 表示字符O重復(fù)出現(xiàn)指定次數(shù)n。因此[O*2]匹配OO的字符串。

  三,控制字符的不同表達(dá)方式

  速記符 含義 八進(jìn)制方式

  \a Ctrl-G 鈴聲

Linux系統(tǒng)中文本操作命令tr怎么使用

時(shí)間: 春健736 分享

  \f Ctrl-L 走行換頁(yè) class="main">

Linux系統(tǒng)中文本操作命令tr怎么使用

時(shí)間: 春健736 分享

  \n Ctrl-J 新行 class="main">

Linux系統(tǒng)中文本操作命令tr怎么使用

時(shí)間: 春健736 分享

  \r Ctrl-M 回車(chē) class="main">

Linux系統(tǒng)中文本操作命令tr怎么使用

時(shí)間: 春健736 分享

  \t Ctrl-I tab鍵 class="main">

Linux系統(tǒng)中文本操作命令tr怎么使用

時(shí)間: 春健736 分享

  \v Ctrl-X 0 注意這些控制字符,如果想在linux下輸入,如我們可能需要輸入^M這種字符,只需ctrl+V+M同時(shí)按下即可。

  四,字符替換

  這是tr的默認(rèn)操作,先看下面的命令和輸出

  C代碼

  [html]

  [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

  第一行輸出就是將小寫(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)換,可以按下面的輸入:

  C代碼

  [html]

  tr "a-z" "A-Z" < inputfile

  五,去除重復(fù)字符

  這個(gè)時(shí)候,所用的選項(xiàng)是-s選項(xiàng),如:

  C代碼

  [html]

  [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"字符集中的重復(fù)字符去掉,只留一個(gè)。因?yàn)?quot;hello world,root",只有o滿足條件,所以將root變成rot,把中間的兩個(gè)o變成一個(gè)。

  第二行將hello和root兩個(gè)字符都?jí)嚎s了。

  第三行表示將a-z中的除復(fù)字符都去掉。

  第三行表示將字符串中的重復(fù)的且重復(fù)字符在0-9字符集中的字符去掉,這里沒(méi)有。

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

  [html]

  tr -s "\n" < inputfile 或者 tr -s " class="main">

Linux系統(tǒng)中文本操作命令tr怎么使用

時(shí)間: 春健736 分享

  就是將重復(fù)的換行符去掉,只留一個(gè)。

  六,刪除字符

  -d選項(xiàng)和-s選項(xiàng)類(lèi)似,只不過(guò)-d選項(xiàng)會(huì)刪除所有出現(xiàn)的字符。

  C代碼

  [html]

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

  來(lái)源:http://www.cnblogs.com/fukajg/archive/2012/09/28/2706575.html

  用法:tr [選項(xiàng)]... SET1 [SET2]

  從標(biāo)準(zhǔn)輸入中替換、縮減和/或刪除字符,并將結(jié)果寫(xiě)到標(biāo)準(zhǔn)輸出。

  -c, -C, --complement 首先補(bǔ)足SET1

  -d, --delete 刪除匹配SET1 的內(nèi)容,并不作替換

  -s, --squeeze-repeats 如果匹配于SET1 的字符在輸入序列中存在連續(xù)的

  重復(fù),在替換時(shí)會(huì)被統(tǒng)一縮為一個(gè)字符的長(zhǎng)度

  -t, --truncate-set1 先將SET1 的長(zhǎng)度截為和SET2 相等

  --help 顯示此幫助信息并退出

  --version 顯示版本信息并退出

  SET 是一組字符串,一般都可按照字面含義理解。解析序列如下:

  \NNN 八進(jìn)制值為NNN 的字符(1 至3 個(gè)數(shù)位)

  \ 反斜杠

  \a 終端鳴響

  \b 退格

  \f 換頁(yè)

  \n 換行

  \r 回車(chē)

  \t 水平制表符

  \v 垂直制表符

  字符1-字符2 從字符1 到字符2 的升序遞增過(guò)程中經(jīng)歷的所有字符

  [字符*] 在SET2 中適用,指定字符會(huì)被連續(xù)復(fù)制直到吻合設(shè)置1 的長(zhǎng)度

  [字符*次數(shù)] 對(duì)字符執(zhí)行指定次數(shù)的復(fù)制,若次數(shù)以 0 開(kāi)頭則被視為八進(jìn)制數(shù)

  [:alnum:] 所有的字母和數(shù)字

  [:alpha:] 所有的字母

  [:blank:] 所有呈水平排列的空白字符

  [:cntrl:] 所有的控制字符

  [:digit:] 所有的數(shù)字

  [:graph:] 所有的可打印字符,不包括空格

  [:lower:] 所有的小寫(xiě)字母

  [:print:] 所有的可打印字符,包括空格

  [:punct:] 所有的標(biāo)點(diǎn)字符

  [:space:] 所有呈水平或垂直排列的空白字符

  [:upper:] 所有的大寫(xiě)字母

  [:xdigit:] 所有的十六進(jìn)制數(shù)

  [=字符=] 所有和指定字符相等的字符

  僅在SET1 和SET2 都給出,同時(shí)沒(méi)有-d 選項(xiàng)的時(shí)候才會(huì)進(jìn)行替換。

  僅在替換時(shí)才可能用到-t 選項(xiàng)。如果需要SET2 將被通過(guò)在末尾添加原來(lái)的末字符的方式

  補(bǔ)充到同SET1 等長(zhǎng)。SET2 中多余的字符將被省略。只有[:lower:] 和[:upper:]

  以升序展開(kāi)字符;在用于替換時(shí)的SET2 中以成對(duì)表示大小寫(xiě)轉(zhuǎn)換。-s 作用于SET1,既不

  替換也不刪除,否則在替換或展開(kāi)后使用SET2 縮減。

  例子:

  C代碼

  [root@localhost zhangy]# echo "TANK" |tr A-Z a-z #大寫(xiě)字母轉(zhuǎn)小寫(xiě)

  tank

  [root@localhost zhangy]# echo 'tank zhang' | tr a-z A-Z #小寫(xiě)字線轉(zhuǎn)大寫(xiě)

  TANK ZHANG

  [root@localhost zhangy]# cat aaa.txt #原文件

  aaa

  bbb

  [root@localhost zhangy]# cat aaa.txt|tr 'a' 'c' #字母c替換字母a

  ccc

  bbb

  [root@localhost zhangy]# cat aaa.txt|tr -d 'a' #刪除所有字母a

  bbb

  [root@localhost zhangy]# cat aaa.txt|tr -d '\n\t' 刪除文件file中出現(xiàn)的換行'\n'、制表'\t'字符

  aaabbb

  [root@localhost zhangy]# cat aaa.txt|tr -s [a-zA-Z] #刪除重復(fù)的字母

  a

  b

  [root@localhost zhangy]# cat aaa.txt|tr -s '\n' #刪除空行

  aaa

  bbb

  [root@localhost zhangy]# cat aaa.txt |tr -s ' class="main">

Linux系統(tǒng)中文本操作命令tr怎么使用

時(shí)間: 春健736 分享
645070