用tr進行替換

2021-08-17 09:09:56 字數 2389 閱讀 3009

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...