tr用法

一、tr命令介紹

  tr命令主要用來從標準輸入中通過替換或刪除操作進行字符轉換,然後打印輸出到標準輸出。可以通過管道或重定向標準輸入來獲得 tr 的輸入數據。tr 對輸入數據可以進行三種操作: 字符替換、壓縮重複字符和刪除字符。

  tr命令格式:tr [OPTION] String1 [String2]  

二、命令詳細說明

   1. trstring1string2用來指示一個字符集合範圍。可以是下面的一些形式(一般要加雙引號): 

     1) [a-d] : [a-d]表示abcd,常用的有[a-z][A-Z][0-9]等,[bfgh]表示 bfgh。可以加上單或雙引號 

     2) [C*n] : 表示字符 C 重複出現指定次數n。因此,[F*3]表示FFF。一般只能出現在 string2中。 

     3) \nnn : 三位八進制數,對應有效的 ASCII 字符。一般用於表示特定的控制字符。 

            速記符                  含義            八進制方式 

             \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 

     4) [:class_name:] : tr 支持使用內建的字符類別。常見的字符類別有

        [:alnum:]     字母、數字(0-9,a-z,A-Z) 

        [:alpha:]     字母(a-z,A-Z) 

        [:cntrl:]     控制字符 

        [:digital:]   數字(0-9) 

        [:graph:]     可打印的字符,不包含空格 

        [:lower:]     小寫字母(a-z) 

        [:print:]     可打印的字符,包含空格 

        [:punct:]     標點符號 

        [:space:]     空格 

        [:upper:]     大寫字母(A-Z) 

        [:xdigital:]  16 進制數字(0-9,a-f,A-F) 

     5) 普通字符串形式: 比如 aeioubdfgh 等。 

  2.選項"-c": 表示用在輸入數據中出現,但是不包含在 string1 字符範圍內的字符組成的集合,代替原來的 string1。在 tr 的三類操作中都可以使用選項"-c" 

  eg: echo "adcfghg" | tr -cd fgca  // 將顯示 acfgg  輸入數據中不包含在 string1 中的字符範圍 "dh"  ,所以,實際上只是刪除了字符"dh" 

  3.tr 用於字符替換: 只需要同時給出 string1 string2,可以需要不指定特別的選項。 

   1) Usage: tr string1 string2 

     輸入數據中屬於 string1 字符範圍內的字符都將被替換,string1 中的第 n 個字符被替換爲 string2 中的第 n個字符。 

    eg: echo "adcfgh" | tr adcgw vbnle  // 將顯示 vbnflh (v 替換 ab 退回n 替換 cl 替換 g...) 

   2) 一般 string1 string2 的字符個數應該相同。如果字符個數不同,分爲兩種情況

     string1 的字符個數少於 string2 的字符個數: string2 種額外的字符將被忽略。  

     string1 的字符個數多於 string2 的字符個數,又可分爲兩種情況

      ·對於 BSD 系列的系統: tr 會重複 string2 中的最後一個字符,直到補齊到 string1 一樣的長度。 

      ·對於 System V 的系統 : tr 將截去 string1 中超長的部分。 

       GUN tr 使用 BSD 方式,如果想使用 System V 方式,需要指定選項"-t" 

       eg: echo "addcfghg" | tr  adcgw vbn     // 將打印 vbbnfnhn 

           echo "addcfghg" | tr  -t adcgw vbn  // 將打印 vbbnfghg 

   3) tr 的字符替換操作主要用途有 大小寫轉換等。 

      eg: tr [a-z] [A-Z] < video.txt  // 將文件 video.txt 中的所有小寫字母轉換成大寫字母 

          tr ":" "\011" < /etc/passwd  // passwd 文件的域分隔符改爲"\011""TAB" 

 4.tr 用於刪除字符: 使用選項"-d"  

  1) Usage: tr -d string1  

   輸入數據中所有在 string1 中出現過的字符都將被刪除。 

  2) echo "This is a note !"| tr -d [:space:] // 將打印 Thisisanote  即刪除所有空格  

     tr -cd "[a-z][A-Z][\n]"  <diary.txt  // 文件 diary.txt 中非字母或回車的字符都將被刪除 

 5.tr 用於壓縮重複字符: 使用選項"-s"。壓縮操作可以單獨進行,也可以在替換操作或刪除操作之後進行,因而分成 3 種情況

  1) Usage: tr -s string1 

   輸入數據中連續出現的字符,只有還在 string1 中出現過的,纔會將被壓縮成一個字符。 

   eg: echo "aaaccdefffgghhh"| tr -s adeg  // 將打印 accdefffghhh (string1 中無字符"cfh")  

       tr -s "\n" < plane.txt  // 刪除文件 plane.txt 中的空行 (即壓縮回車符

  2) Usage: tr -s string1 string2 

    string1 string2 用於替換操作,string2 還用於壓縮操作。 

    eg: tr -s "[\015\032]" "[\012*]" <input_file  // 將文件 iput_file dos 格式轉換到 unix 格式 

  3) Usage: tr -ds string1 string2 

    string1 用於刪除操作,string2 用於壓縮操作。 

    eg: echo "aaaccdefffgghhh"| tr -ds adeg fh  // 將打印 ccfh 

       echo "aaaccdefffgghhh"| tr -d adeg      // 將打印 ccfffhhh

 6. tr 的替換操作中,如果 string1 使用了中括號"[ ]",那麼 string2 也應該使用"[ ]" 

 7.tr 主要用於字符轉換或者抽取控制字符。tr 的大多數功能都可以用 sed 來完成,但有些人寧願使用 tr,因爲tr 更加快捷、容易。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章