每天一點linux命令:tr刪除、替換字元
阿新 • • 發佈:2018-11-14
提到替換刪除字元,可能大家使用頻率比較高的是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,所有除數字之外的字元都會變成"*",包括 換行符等。
測試四:
將所有小寫字母改成大寫字母