tr(translate)命令詳解
功能:轉換字符。如將大寫字符轉換成小寫。
語法:tr 選項 [字符串1] [字符串2]
tr的行爲如同過濾器,從標準輸入讀取字符,再將結果寫到標準輸出。任何輸入字符只要出現在字符串1列表中,就會置換成字符串2裏相應的字符
注意:tr命令不接受指定的文件參數,而只是對標準輸入進行轉換
常用選項:
-c 用字符串1中字符集的補集替換此字符集,要求字符集爲ASCII。
-d 從標準輸入刪除源字符裏所列的字符,而不是轉換它們
-s 濃縮重複的字符。如果標準輸入中連續重複出現源字符裏所列的字符,將其濃縮成一個。
常用的字符範圍:
指定字符串1或字符串2的內容時,只能使用單字符或字符串範圍或列表。
[a-z] a-z內的字符組成的字符串。
[A-Z] A-Z內的字符組成的字符串。
[0-9] 數字串。
\octal 一個三位的八進制數,對應有效的ASCII字符。
[A*n] 表示字符A重複出現指定次數n。因此[A*3]匹配AAA的字符串
[:alnum:] :所有字母字符與數字
[:alpha:] :所有字母字符
[:blank:] :所有水平空格
[:cntrl:] :所有控制字符
[:digit:] :所有數字
[:graph:] :所有可打印的字符(不包含空格符)
[:lower:] :所有小寫字母
[:print:] :所有可打印的字符(包含空格符)
[:punct:] :所有標點字符
[:space:] :所有水平與垂直空格符
[:upper:] :所有大寫字母
[:xdigit:] :所有 16 進位制的數字。
特定控制字符的不同表達方式
速記符 |
含義 |
八進制方式 |
備註 |
\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 |
|
舉例說明
(1)刪除字符串
tr -d ‘\r ’ < test.txt | sort > test-new.txt
刪除test.txt文件中的回車符,排序後將結果輸出到test-new.txt文件中
[root@server ~]# echo xiaoguang | tr -d "a" #輸出xiogung
[root@server ~]# echo xiaoguang | tr -d "xiao" #輸出gung
注意:tr是將字符串1的各個字符串單獨處理的
(2)刪除重複字符串
echo aabbccccddddd | tr -s '[a-z]' #輸出abcd
(3)替換大小寫
現有有個文件word.txt,內容如下:
[root@server ~]# cat word.txt
abCDEf
現在使用tr把word.txt中的小寫都變成大寫
[root@server ~]# tr '[a-z]' '[A-Z]' < word.txt
ABCDEF
(4)刪除空行
[root@server tr]# tr -s '\n' < test.txt