天天看點

Linux下五個字元轉換指令:tr,col,join,paste,expand

Linux中常用的字元轉換指令有:tr,col,join,paste,expand。

(1)tr:可以用來删除一段資訊當中的文字,或者是進行文字資訊的轉換。

    a) tr 'SET1' 'SET2' tr的預設操作是替換, 作用是把标準輸入中含有的SET1中的字元依次換成SET2中對應的字元。

例如:echo "Hello, Kevin" | tr 'a-z' 'A-Z'

輸出結果是:HELLO,KEVIN

例如:echo "Hello, Kevin" | tr 'he' 'XX'

輸出結果是:HXllo, KXvin

b) tr -d SET1 當tr帶有-d參數的時候表示删除标準輸入中所有在SET1 中出現的字元。

例如:echo “Hello, Kevin” | tr -d 'a-z'

輸出結果是:H, K上述語句的作用就是删除了标準輸入中的所有小寫字母。

c) tr -s SET1 當tr帶有-s參數的時候表示替換掉标準輸入中在SET1中重複出現的字元,隻保留一個。

例如: echo "Hello, Kevin" | tr -s 'a-z'

輸出結果是:Helo, Kevin 結果中删除重複出現的l隻保留了一個。

(2) col:在許多UNIX說明檔案裡,都有RLF控制字元。當我們運用shell特殊字元">"和">>",把說明檔案的内容輸出成純文字檔案時,控制字元會變成亂碼,col指令則能有效濾除這些控制字元。

   a)col -b 過濾掉所有的控制字元,包括RLF和HRLF。

   b)col -x 将tab建換成對等的空格鍵

(3)join: 它處理兩個檔案之間的資料,主要是将兩個檔案中有相同資料的行合并在一起。要注意的是在使用join之前,索要處理的兩個檔案應當是經過排序的,否則有些對比的項目會被略過。

-t:分段的分隔符。 join預設以空格符分隔資料,并且對比“第一個字段”的資料,如果兩個檔案相同,則将兩條資料連城一行,且第一個字段放在第一個。

-i: 忽略大小寫的差異。

-1: 數字1後面代表的是第一個檔案用哪個字段來分析

      -2:數字2後面代表的是第二個檔案用哪個字段來分析

例如:test1中有如下資料:

Kevin 100
Luna 100
Max 100
John 100
           

test2中有如下資料:

Luna 10
John 20
Max 30
Kevin 40
           

分别将test1和test2排序并儲存在test1_s和test2_s中,然後用join對兩個檔案進行處理:join test1 test2 獲得以下結果:

John 120
Kevin 140
Luna 110
Max 130
           

(4)paste: 直接将兩個檔案中具有相同資料的行貼在一起,且中間以tab建隔開。

-d: 後面可以接分隔符,預設是以tab來分隔的

- :如果file部分寫成-,表示資料來自stdin

還是按照上面的例子對于排序後的test1_s和test2_s用paste進行處理 paste -d ' ' test1_s test2_s将獲得以下結果:

John 100 John 20
Kevin 100 Kevin 40
Luna 100 Luna 10
Max 100 Max 30
           

(5)expand: 将tab轉換成空格鍵。

-t : 後面可以接數字,自定義一個tab按鍵代表多少個字元。

繼續閱讀