歡迎來到Linux教程網
Linux教程網
Linux教程網
Linux教程網
您现在的位置: Linux教程網 >> UnixLinux >  >> Linux基礎 >> 關於Linux

linux:tr的命令用法

linux:tr的命令用法   可以把tr看作為一個簡化的sed工具,tr表示為:translate。tr命令主要用於實現以下兩個功能 替換操作的字符串轉換。   刪除操作的字符串轉換,可以很容易的刪除一些控制字符或者是空行。 tr命令能夠實現的功能,都能夠用sed命令來實現。但就具體的替換功能來說,tr用起來更容易,也比較簡單。   一,命令格式 [html]  tr [option] ["string1"] ["string2"] < file    常用的選項有: 默認選項。就是沒有任何選項的時候,tr默認為替換操作,就是將string1在文件中出現的字符替換為string2中的字符,這裡要注意的是替換關系。 -c選項,用string1中字符的補集替換string1,這裡的字符集為ASCII。 -d選項,刪除文件中所有在string1中出現的字符。 -s選項,刪除文件中重復並且在string1中出現的字符,只保留一個。 -c選項在使用時,只是將string1替換為現在的補集,如在使用   C代碼   [html]    [root@localhost client]# echo "hello world,root,2012" | tr -c "0-9" "*"    *****************2012*       可以看出,我們使用0-9,添加-c選項後,會把0-9替換為其補集,這時補集自然不包含0-9,而包含很多其它的字符,接下來就把所有的其它字符都替換成*號,但不包含數字。 如果只需要替換數字的話: C代碼   [html]    [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的默認操作,先看下面的命令和輸出 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       第一行輸出就是將小寫換成大寫。 第二行輸出將小寫中的a-l分別換成A-L,而將小寫中的l以後的字符都不替換。 第三行輸出將小寫中的a-h換成A-H,而h以後的字符都換成H,因為後者的替換空間沒有前面的字符空間大,所以就重復後面的H,相當於後面的字符是A-HHH......HHHHH。 如果我們想要進行大小寫轉換,可以按下面的輸入: C代碼   [html]    tr "a-z" "A-Z" < inputfile       五,去除重復字符 這個時候,所用的選項是-s選項,如: 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"字符集中的重復字符去掉,只留一個。因為"hello world,root",只有o滿足條件,所以將root變成rot,把中間的兩個o變成一個。 第二行將hello和root兩個字符都壓縮了。 第三行表示將a-z中的除復字符都去掉。 第三行表示將字符串中的重復的且重復字符在0-9字符集中的字符去掉,這裡沒有。   如果我們想要去掉空行,可以這樣操作: [html]  tr -s "\n" < inputfile 或者 tr -s "\012" <inputfile // 這兩個是一樣的。   就是將重復的換行符去掉,只留一個。   六,刪除字符 -d選項和-s選項類似,只不過-d選項會刪除所有出現的字符。 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,      來源:http://www.cnblogs.com/fukajg/archive/2012/09/28/2706575.html   用法:tr [選項]... SET1 [SET2] 從標准輸入中替換、縮減和/或刪除字符,並將結果寫到標准輸出。     -c, -C, --complement        首先補足SET1   -d, --delete            刪除匹配SET1 的內容,並不作替換   -s, --squeeze-repeats    如果匹配於SET1 的字符在輸入序列中存在連續的                 重復,在替換時會被統一縮為一個字符的長度   -t, --truncate-set1        先將SET1 的長度截為和SET2 相等       --help        顯示此幫助信息並退出       --version        顯示版本信息並退出   SET 是一組字符串,一般都可按照字面含義理解。解析序列如下:     \NNN    八進制值為NNN 的字符(1 至3 個數位)   \\        反斜槓   \a        終端鳴響   \b        退格   \f        換頁   \n        換行   \r        回車   \t        水平制表符   \v        垂直制表符   字符1-字符2    從字符1 到字符2 的升序遞增過程中經歷的所有字符   [字符*]    在SET2 中適用,指定字符會被連續復制直到吻合設置1 的長度   [字符*次數]    對字符執行指定次數的復制,若次數以 0 開頭則被視為八進制數   [:alnum:]    所有的字母和數字   [:alpha:]    所有的字母   [:blank:]    所有呈水平排列的空白字符   [:cntrl:]    所有的控制字符   [:digit:]    所有的數字   [:graph:]    所有的可打印字符,不包括空格   [:lower:]    所有的小寫字母   [:print:]    所有的可打印字符,包括空格   [:punct:]    所有的標點字符   [:space:]    所有呈水平或垂直排列的空白字符   [:upper:]    所有的大寫字母   [:xdigit:]    所有的十六進制數   [=字符=]    所有和指定字符相等的字符   僅在SET1 和SET2 都給出,同時沒有-d 選項的時候才會進行替換。 僅在替換時才可能用到-t 選項。如果需要SET2 將被通過在末尾添加原來的末字符的方式 補充到同SET1 等長。SET2 中多余的字符將被省略。只有[:lower:] 和[:upper:] 以升序展開字符;在用於替換時的SET2 中以成對表示大小寫轉換。-s 作用於SET1,既不 替換也不刪除,否則在替換或展開後使用SET2 縮減。   例子: C代碼   [root@localhost zhangy]# echo "TANK" |tr A-Z a-z   #大寫字母轉小寫   tank      [root@localhost zhangy]# echo 'tank zhang' | tr a-z A-Z    #小寫字線轉大寫   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中出現的換行'\n'、制表'\t'字符   aaabbb      [root@localhost zhangy]# cat aaa.txt|tr -s [a-zA-Z]   #刪除重復的字母   a      b      [root@localhost zhangy]# cat aaa.txt|tr -s '\n'    #刪除空行   aaa   bbb      [root@localhost zhangy]# cat aaa.txt |tr -s '\011' '\040'   #用空格符\040替換制表符\011   aaa      bbb  
Copyright © Linux教程網 All Rights Reserved