1. 程式人生 > >每天一點linux命令:tr刪除、替換字元

每天一點linux命令:tr刪除、替換字元

提到替換刪除字元,可能大家使用頻率比較高的是sed。
sed命令當然是非常好的使用工具,但是單講替換功能,可能更適用於字串。今天要說的tr,是針對字元的操作,而不是字串。
使用方法:
tr [option] [set1] [set2] <輸入流>
注意:指定的字元可以使用正則表示式;如果是檔案裡面的內容,請使用重定向符號
引數:

引數 作用
-d 刪除指定的字元
-s 只保留連續字元的第一個字元
-c 對指定的第一個字元部分(set1)做取反操作
不加引數 將set1的字元替換為set2的字元

什麼叫針對字元而不是字串操作呢,舉個不加引數的例子:
在這裡插入圖片描述
我們用tr命令操作,對輸入的文字中的"abc"替換為"def",意思是“a”替換為"d",“b"替換為"e”,“c"替換為"f”。
針對輸入中的每一個"a", “b”, "c"都會做如此操作。

對下面的文件進行測試:
test1
在這裡插入圖片描述

測試一:刪除掉test1中的’laugh’字元
tr -d 'laugh' < test1
在這裡插入圖片描述
其中所有的"l",“a”,“u”,“g”, "h"字元都刪掉了。

測試二:將連續重複的字元只保留一個。
tr -s [a-z][0-9] < test1


在這裡插入圖片描述
這裡我們使用了正則表示式[a-z][0-9]表示所有的小寫字母和阿拉伯數字,然後可以看到原來所有的連續字元都只保留一個了,如文字中的"qq",“5211314”,還有最後一行。

測試三:將除數字外的其他字元變成"*"。
這裡使用-c引數:
如果不加-c引數,應該是這樣,所有的數字都變成了"*":
在這裡插入圖片描述

加-c,所有除數字之外的字元都會變成"*",包括 換行符等。
在這裡插入圖片描述
測試四
將所有小寫字母改成大寫字母
在這裡插入圖片描述