tr只能通過stdin(標準輸入),而無法通過命令列引數來接受輸入
tr [options] set1 set2
將來自stdin的輸入字元從set1對映到set2,然後將輸出寫入stdout(標準輸出)。set1和set2是字元類或字符集。如果兩個字符集的長度不相等,那麼set2會不斷重複其最後乙個字元,直到長度與set1相同。如果set2的長度大於set1,那麼在set2中超出set1長度的那部分字元則全部被忽略。
1. 將輸入字元由大寫轉換成小寫
$ echo "hello who is this" | tr 'a-z' 'a-z'
2. 簡單的加密解密
$ echo 12345 | tr '0-9' '9876543210'
87654 # 已加密
$ echo 87654 | tr '9876543210' '0-9'
12345 # 已解密
3.rot13 加密演算法
$ echo "tr came, tr saw, tr conquered." | tr 'a-za-z' 'n-za-mn-za-m'
得到輸出:
ge pnzr, ge fnj, ge pbadhrerq.
對加密後的密文再次使用同樣的rot13函式,我們採用:
$ echo ge pnzr, ge fnj, ge pbadhrerq. | tr 'a-za-z' 'n-za-mn-za-m'
得到輸出:tr came, tr saw, tr conquered.tr
4.將製表符轉換成空格
$ tr '\t' ' ' < file.txt
其他功能:
1. 用tr刪除字元
$ cat file.txt | tr -d '[set1]'
#只使用set1,不使用set2
[hadoop@aliyun1 ~]$ echo "hello 123 world 456" | tr -d '0-9'
hello world
2. 字符集補集
我們可以利用選項-c來使用set1的補集。下面的命令中,set2是可選的:
tr -c [set1] [set2]
set1的補集意味著這個集合中包含set1中沒有的所有字元。
最典型的用法是從輸入文字中將不在補集中的所有字元全部刪除。
[hadoop@aliyun1 ~]$ echo hello 1 char 2 next 4 | tr -d -c '0-9 \n'
1 2 4
[hadoop@aliyun1 ~]$ echo hello 1 char 2 next 4 | tr -d -c '0-9\n'
124[hadoop@aliyun1 ~]$ echo hello 1 char 2 next 4 | tr -d -c '0-9'
124[hadoop@aliyun1 ~]$ echo hello 1 char 2 next 4 | tr -d -c ''
[hadoop@aliyun1 ~]$
3.用tr壓縮字元
經常需要從事的一項任務就是壓縮空白字元。
tr的-s選項可以壓縮輸入中重複的字元
[hadoop@aliyun1 ~]$ echo "gnu is not unix. recursive right ?" | tr -s ' '
gnu is not unix. recursive right ?
用一種巧妙的方式用tr將檔案中的數字列表進行相加:
[hadoop@aliyun1 ~]$ cat sum.txt 12
345[hadoop@aliyun1 ~]$ cat sum.txt | echo $[ $(tr -s '\n' '+') 0]
15
4. 字元類tr可以像使用集合一樣使用各種不同的字元類,這些字元類如下所示:
alnum:字母和數字。
alpha:字母。
cntrl:控制(非列印)字元。
digit:數字。
graph:圖形字元。
lower:小寫字母。
print:可列印字元。
punct:標點符號。
space:空白字元。
upper:大寫字母。
xdigit:十六進製制字元。
例如:
[hadoop@aliyun1 ~]$ echo abcdefg | tr [:lower:] [:upper:]
abcdefg
shell實現tr刪除替換詳解
tr translate縮寫 主要用於刪除檔案中的控制字元,或進行字元轉換。語法 tr c d s t set1 set2 set1 字符集1 程式設計客棧set2 字符集2 c complement,用set2替換除set1以外的字元。d delete,刪除set1中所有的字元,不轉換。s squ...
JS呼叫tr進行隱藏
function outband if iob v value y break as負載分擔方式隱藏 for var d 0 d lbt.length d if lbt d value 0 break displaycaller 這是js的 然後再每個radio上觸發onclick事件 ps 注意 ...
用指針對文字進行字串替換操作
指標是c語言的精髓,用指標進行文字內容解析等處理在開發過程中非常常見,這裡我寫了乙個 指針對文字進行字串替換操作的 作為練習。用vs2017環境編譯,因為本人偏愛日誌除錯的方法,所以 裡日誌列印內容佔了一定的行數。執行前要在對應目錄 見 裡的巨集定義 下建立文字文件,用於除錯。file operat...