tr 命令
tr 命令常被用來更改字符。我們可以把它看作是一種基於字符的查找和替換操作。換字是一種把字符從一個字母轉換爲另一個字母的過程。tr 從標準輸入中替換、縮減和/或刪除字符,並將結果寫到標準輸出。tr 只能通過 stdin(標準輸入),而無法通過命令行參數來接受輸入。tr 是 translate(轉換)的縮寫。
(1)命令格式
tr [選項] SET1 SET2
將來自 stdin 的輸入字符從 SET1 映射到 SET2,並將其輸出寫入 stdout(標準輸出)。SET1 和 SET2 是字符類或字符集。如果兩個字符集的長度不相等,那麼 SET2 會不斷重複其最後一個字符,直到長度與 SET1 相同。如果 SET2 的長度大於 SET1,那麼在 SET2 中超出 SET1 的那部分字符則全部被忽略。
(2)常用參數
參數 | 描述 |
---|---|
-d | 刪除匹配 SET1 的內容,並不作替換 |
(3)常用範例
例一:將輸入的字符大寫轉換爲小寫,可以使用如下命令:
echo 'THIS IS SHIYANLOU!' | tr 'A-Z' 'a-z'
例二:將輸入的字符中的數字刪除,可以使用如下命令:
echo 'THIS 123 IS S1HIY5ANLOU!' | tr -d '0-9'
例三:tr 命令的一個有趣的用法是執行 ROT13 文本編碼。ROT13 是一款微不足道的基於一種簡易的替換暗碼的加密類型。把 ROT13 稱爲“加密”是大方的,“文本模糊處理”更準確些。有時候它被用來隱藏文本中潛在的攻擊內容。這個方法就是簡單地把每個字符在字母表中向前移動 13 位。因爲移動的位數是可能的 26 個字符的一半,所以對文本再次執行這個算法,就恢復到了它最初的形式。可以使用如下命令:
#加密
echo 'shiyanlou' | tr 'a-zA-Z' 'n-za-mN-ZA-M'
fuvlnaybh
#解密
echo 'fuvlnaybh' | tr 'a-zA-Z' 'n-za-mN-ZA-M'
shiyanlou