<em id="0a85b"><option id="0a85b"></option></em>

<abbr id="0a85b"></abbr>

      <nobr id="0a85b"></nobr>
        <tr id="0a85b"></tr>
        9久久伊人精品综合,亚洲一区精品视频在线,成 人免费va视频,国产一区二区三区黄网,99国产精品永久免费视频,亚洲毛片多多影院,精品久久久无码人妻中文字幕,无码国产欧美一区二区三区不卡
        學習啦 > 學習電腦 > 操作系統 > Linux教程 > linux shell tr命令詳解

        linux shell tr命令詳解

        時間: 佳洲1085 分享

        linux shell tr命令詳解

          tr命令是linux下的一個命令,那么它的語法和用途是什么呢?下面由學習啦小編為大家整理了linux shell tr命令的相關知識,希望大家喜歡!

          linux shell tr命令

          tr是translate的簡寫,亦即翻譯,但是遺憾的是,它不能翻譯句子,只能翻譯單個字符。

          1 工作原理

          先記住一點,tr命令不接受指定的文件參數,而只是對標準輸入進行翻譯。好了,記住這點后,我們繼續。

          tr的命令格式是tr SET1 SET2,凡是在SET1中的字符,都會被替換為SET2中相應位置上的字符,簡單吧!

          2 例子

          tr的例子其實都大同小異,看一個最簡單的例子:

          我們有一個包含了四個人身高的數據文件,名字叫height.txt,它的內容是這樣的:

          [rocrocket@rocrocket programming]$ cat height.txt

          1.79 1.83

          1.65 1.59

          我們想搞一個惡作劇,將所有人的身高從1米級別都提高到2米級別,呵呵,一個tr就可以搞定。

          [rocrocket@rocrocket programming]$ tr 1 2 < height.txt

          2.79 2.83

          2.65 2.59

          希望你沒有忘記,tr只處理標準輸入,所以我們需要將height.txt通過重定向指到tr的標準輸入才可以。

          3 用tr來修改文件中的間隔符

          當使用cut的時候,通常會被間隔符問題所困擾,我們這個時候可以考慮到tr這個命令。

          還是以height.txt文件為例,其中的間隔符是空格,我們把它修改為制表符吧!

          [rocrocket@rocrocket programming]$ tr ‘ ‘ ‘′ < height.txt

          1.79 1.83

          1.65 1.59

          這里有一個小知識點,像制表符、換行符這些字符不好表示,我們可以考慮使用ASCII的八進制形式來表示,制表符的八進制形式是11,回車是15,換行是12。而在tr命令中,可以使用\nnn形式表示八進制形式的字符。如果你實在記不住這些編號,那么用\t表示制表符你總該可以記住吧!(\n代表新行,\r代表回車)

          這下,你應該可以理解上面那條命令的作用了吧。如果你仍然懷疑,那么,看看下面這條命令,你就該心服口服了:

          [rocrocket@rocrocket programming]$ tr ‘ ‘ ‘′ < height.txt |sed -n l

          1.79\t1.83$

          1.65\t1.59$

          看!空格的的確確被替換成了制表符嘍!

          4 使用tr把文章中的小寫都轉換成大寫

          這個正是tr所擅長的地方。

          加入我們擁有一個文件叫做word.txt,里面包含的內容是AbcdE。

          那么最簡單的替換大小寫的方法是:

          [rocrocket@rocrocket programming]$ cat word.txt

          AbcdE

          [rocrocket@rocrocket programming]$ tr ‘a-z’ ‘A-Z’ < word.txt

          ABCDE

          5 [CHAR*]

          這是 SET2 專用的設定,功能是重復指定的字符到與 SET1 相同長度為止

          例子:

          [rocrocket@rocrocket programming]$ cat number.txt

          1234567890

          [rocrocket@rocrocket programming]$ tr ‘1-5′ ‘[A*]‘ < number.txt

          AAAAA67890

          6 [CHAR*REPEAT]

          這也是SET2專用的設定,功能是將CHAR重復REPEAT次數。其中REPEAT次數可以用八進制數表示,但記得要以0開頭表示八進制數。

          例子:

          [rocrocket@rocrocket programming]$ tr ‘1-9′ ‘[A*5]BCDE’ < number.txt

          AAAAABCDE0

          7 在tr中表示集合的符號

          [:alnum:] :所有字母字符與數字

          [:alpha:] :所有字母字符

          [:blank:] :所有水平空格

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

          [:digit:] :所有數字

          [:graph:] :所有可打印的字符(不包含空格符)

          [:lower:] :所有小寫字母

          [:print:] :所有可打印的字符(包含空格符)

          [:punct:] :所有標點字符

          [:space:] :所有水平與垂直空格符

          [:upper:] :所有大寫字母

          [:xdigit:] :所有 16 進位制的數字

          例子:

          將所有的數字都轉換為字符x。

          [rocrocket@rocrocket programming]$ tr [:alnum:] ‘[x*]‘ < number.txt

          xxxxxxxxxx

          8 tr里面包含SET1和SET2,那如果出現兩個集合的大小不同的情況,tr如何處理

          這個問題,最好的解決辦法就是做實驗啊。

          第一種情況是SET1>SET2:

          [rocrocket@rocrocket programming]$ tr 1-5 AB < number.txt

          ABBBB67890

          結論一下子就出來了,SET1中多出來的字符都會和SET2中最后一個字符相對應。

          第二種情況SET1

          [rocrocket@rocrocket programming]$ tr 1-3 ABCDE < number.txt

          ABC4567890

          很明了,SET2中多余的部分將被拋棄。

          9 tr命令的-s選項

          這個-s選項,是專門針對SET1起作用的,意思是如果發現有連續的SET1里的字符,就把它們縮減為1個。

          一個很經典的應用就是把不規律的空格縮減為一個空格:

          [rocrocket@rocrocket programming]$ cat spaces.txt

          How are you?

          Fine! Thank you!

          [rocrocket@rocrocket programming]$ tr -s ‘ ‘ ‘ ‘ < spaces.txt

          How are you?

          Fine! Thank you!

          效果很明顯,用戶很滿意。恩!

          10 -d選項

          -d選項是用來刪除字符用的。格式是這樣的:tr -d charset

          [rocrocket@rocrocket programming]$ tr -d ‘ ‘ < spaces.txt

          Howareyou?

          Fine!Thankyou!

          看,該有的空格都沒了…這就是-d的作用,把空格都刪除了!

          如果你想把文章中的數字都刪除,就tr -d [0-9] < filename就可以了。

          語法:

          tr [options] [source-char-list] [replace-char-list] < filename

          用途:

          轉換字符,例如:將大寫字符轉換成小寫字符。選項可以讓你指定所要刪除的字符,以及將一串重復出現的字符濃縮成一個。

          常用選項:

          -c: 取source-char-list的反義,所有不在source-char-list中的字符。常與-d , -s配合使用。

          -d: 刪除source-char-list中所定義的字符。

          -s: 濃縮重復的字符。如果標準輸入中連續重復出現source-char-list里所列的字符,則將其濃縮成一個。或者將其濃縮成replace-char-list中的字符。

          tr 'X' 'x' 把所有大寫X轉換成小寫x

          tr '()' '{}' 把( )替換成{ }

          tr '[a-z]' '[A-Z]' 把所有小寫字母變成大寫字母

          tr '[A-Z]' '[N-ZA-M]' 把字符A-M分別轉換成N-Z,而N-Z轉換成A-M

          tr -s ' ' ' ' 把多個空格轉換成單個空格

          tr -d '[0-9]' 刪除所有數字

          引用:[a-z] a-z內的字符組成的字符串。

          [A-Z] A-Z內的字符組成的字符串。

          [0-9] 數字串。

          /octal 一個三位的八進制數,對應有效的A S C I I字符。

          [O*n] 表示字符O重復出現指定次數n。因此[ O * 2 ]匹配O O的字符串。

          大部分t r變種支持字符類和速記控制字符。

          字符類格式為[:c l a s s ],包含數字、希臘字母、空行、小寫、大寫、c n t r l鍵、空格、點記符、圖形等等。

          下表包括最常用的控制字符的速記方式及三位八進制引用方式。

          當用一個單字符替換一個字符串或字符范圍時,注意字符并不放在方括號里( [ ])。一些系統也可以使用方括號,例如可以寫成[“\ 0 1 2”]或“\ 0 1 2”,t r也允許不加引號,因此命令中看到單引號而不是雙引號時也不要感到奇怪。

          像大多數系統工具一樣, t r也受特定字符的影響。因此如果要匹配這些字符,需使用反斜線屏蔽其特殊含義。例如,用\ {指定花括號左邊可以屏蔽其特殊含義。

          代碼:

          速記符含義八進制方式

          \ a Ctrl-G 鈴聲\ 0 0 7

          \ b Ctrl-H 退格符\ 0 1 0

          \f Ctrl-L 走行換頁\ 0 1 4

          \n Ctrl-J 新行\ 0 1 2

          \ r Ctrl-M 回車\ 0 1 5

          \t Ctrl-I tab鍵\ 0 11

          \ v Ctrl-X \ 0 3 0

          去除重復出現的字符

          下面文件包含了一些打印錯誤。這種情況時常發生,例如在v i編輯器中,偶爾按住一個鍵不放。

          代碼:

          And the cowwwwws went homeeeeeeeeeeeee

          Or did theyyyyyyyyyyyyy

          如果要去除重復字母或將其壓縮在一起,使用- s選項。因為都是字母,故使用[ a - z ][A-Z]。輸入文件重定向到t r命令。

          dtdlut@dtdlut:~$ tr -s "[a-z][A-Z]" < apps.txt

          And the cows went home

          Or did they

          刪除空行

          要刪除空行,可將之剔出文件。下面是一個文件p l a n e . t x t。文本間有許多空行。

          plane.txt

          9879932 Spitfire

          190992 Lancaster

          238991 Typhoon

          dtdlut@dtdlut:~$ tr -s "\n" < plane.txt

          plane.txt

          9879932 Spitfire

          190992 Lancaster

          238991 Typhoon

          大寫到小寫

          除了刪除控制字符,轉換大小寫是t r最常用的功能。為此需指定即將轉換的小寫字符[ a - z ]和轉換結果[ A - Z ]。

          第一個例子,t r從一個包含大小寫字母的字符串中接受輸入。

          tr "[a-z]" "[A-Z]" 或者 tr "[:lower:]" "[:upper:]"

          dtdlut@dtdlut:~$ echo "May Day,May Day,Going Down.." | tr "[a-z]" "[A-Z]"

          MAY DAY,MAY DAY,GOING DOWN..

          刪除指定字符

          偶爾會從下載文件中刪除只包含字母或數字的列。需要結合使用- c和- s選項完成此功能。

          下 面的文件包含一個星期的日程表。任務是從其中刪除所有數字,只保留日期。日期有大寫,也有小寫格式。因此需指定兩個字符范圍[ a - z ]和[ A - Z ],命令tr -cs "[a-z][A-Z]" "\n"將文件每行所有不包含在[ a - z ]或[ A - Z ](所有希臘字母)的字符串放在字符串replace-char-list中并轉換為一新行。- s選項表明壓縮所有新行, - c表明取source-char-list的反義。

          dtdlut@dtdlut:~$ cat diray.txt

          mondy 1all0:5b0

          Tuesday 15:00

          wednesday 15:30

          thurday 10:30

          Fridya 09:20

          dtdlut@dtdlut:~$ tr -cs "[a-z][A-Z]" "\n" < diray.txt

          mondy

          all

          b

          Tuesday

          wednesday

          thurday

          Fridya

        3575262 主站蜘蛛池模板: 最新亚洲人成网站在线影院| 国产性一交一乱一伦一色一情| 在线视频中文字幕二区| 精品亚洲欧美无人区乱码| 中文无码人妻有码人妻中文字幕| 神马午夜久久精品人妻| 欧美日韩在线永久免费播放| 在线观看国产精品日本不卡网| 99久久精品国产精品亚洲| 色老头亚洲成人免费影院 | 激情成人综合网| 亚洲伊人五月丁香激情| 午夜福利理论片高清在线| 日韩精品福利视频在线观看| 护士张开腿被奷日出白浆| 丁香婷婷在线视频| 久久久久久久久18禁秘| 无码人妻丰满熟妇区五十路| 成人啪啪一区二区三区| 中文文字幕文字幕亚洲色| 色综合热无码热国产| 不卡乱辈伦在线看中文字幕| 国产三级精品三级| 内射少妇36p九色| 好吊色欧美一区二区三区四区| 国产精品疯狂输出jk草莓视频| 视频一区二区不中文字幕| 国产精品日韩中文字幕| 国产精品区视频中文字幕| 夜色爽爽影院18禁妓女影院| 久久精品99久久久久久久久| 久久香蕉欧美精品| 亚洲日本欧美日韩中文字幕| 亚洲AV永久无码精品秋霞电影影院| 国产午夜成人久久无码一区二区| 日韩一区二区一卡二卡av| 成人天堂资源www在线| 4480yy亚洲午夜私人影院剧情| 日本一区二区三区东京热| 国产精品福利在线观看无码卡一| 亚洲欧美在线综合一区二区三区|