Linux shell 指令碼攻略學習筆記5

2021-07-31 17:47:40 字數 1584 閱讀 9942

這次該說tr命令了~

(1):基本用法

tr 只能通過stdin(標準輸入),而無法通過命令列引數來接受輸入。它的呼叫格式如下:

$ tr [options] set1 set2
將來自stdin 的輸入字元從set1 對映 set2, 然後將輸出寫入stdout(標準輸出)。set1 和set2 是字元類或字符集。如果兩個字符集的長度不相等,那麼set2會不斷重複其最後乙個字元,直到長度與set1相同。 如果set2的長度大於set1,那麼在set2中超過set1長度的那部分字元則全部被忽略。

來看個例子:

將輸入字元由大寫轉換為小寫,可以使用下面的命令:

$ echo " hello who is this" | tr 'a-z' 'a-z'
'a-z' 和 『a-z』 都是集合。我們可以按照需要追加字元或字元類來構造自己定製的集合。

定義集合也很簡單,不需要書寫一長串連續的字串行,只需要使用"起始字元-終止字元"這種格式就行了。如果起始字元-終止字元不是乙個連續的字串行,那麼他就會被視為包含了3個元素的集合,也就是:起始字元,-,終止字元。

通過在tr中使用集合的概念,我們可以輕鬆的將字元從乙個集合對映到另乙個集合中。下面通過一則示例看看如何用tr進行數字加密解密。

加密:解密:

(2): 其他用法

a) 用tr刪除字元

tr 有乙個選項-d,可以通過制定需要刪除的字元集合,將出現在stdin中的特定字元清除掉:

$ cat file.txt | tr -d '[set1]'
例如:

b) 字符集補集

我們可以利用選項-c使用set1的補集。下面的命令中 set2是可選的

tr -c [set1]  [set2]
set1 的補集意味著這個集合中包含set1中沒有的所有字元。

最典型的用法是從輸入文字中將不在補集中的所有字元全部刪除。例如:

在這裡,補集中包含了數字,空格字元和換行符之外的字元。因為指定了-d,所以這些字元全部被刪除。

c) 用tr壓縮字元

tr命令在很多文字處理環境中有用武之地。多數情況下,連續的重複字元應該壓縮成單個字元。經常需要從事的一項任務就是壓縮空白字元。

tr的 -s 選項可以壓縮輸入中重複的字元,方法如下:

$ tr -s '[set]'
例:

(4): 字元類

tr 可以像使用集合一樣使用各種不同的字元類,這些字元類如下所示:

alnum:字母和數字

alpha:字母

cntrl:控制(非列印)字元

digit:數字

graph:圖形字元

lower:小寫字母

print:可列印字元

punct: 標點字元

space:空白字元

upper: 大寫字母

xdigit: 十六進製制字元

可以按照下面的方式並會用所需的字元類

$ tr [:class:] ["class:]
例:

Linux Shell指令碼攻略(三)

一.find命令 1.根據檔名或正規表示式匹配搜尋 2.基於目錄深度的搜尋 maxdepth mindepth 3.根據檔案型別搜尋 4.根據檔案時間搜尋 atime 訪問時間 mtime 修改時間 ctime 變化時間 eg find type f atime 7 print 最近7天訪問的檔案 ...

linux shell指令碼攻略 一

變數數 算 重定向陣列 別名終端資訊 日期相關 除錯指令碼 函式和引數 管道命令 字段分隔符和迭代器 迴圈算術比較 檔案系統相關測試 字串比較 日期內容 格式星期 a 例如 sat a 例如 saturday 月 b 例如nov b 例如 november 日 d 例如31 固定格式日期 d 例如 ...

Linux shell 指令碼學習攻略9

1 建立不可修改的檔案 chattr 能夠將檔案設定為不可修改。不過chattr能做的可不止這些。a 使用下列命令將乙個檔案設定為不可修改 b 這樣檔案file就變成為了不可修改狀態。來試試下面的命令 c 如果需要是檔案恢復可寫狀態,移除不可修改屬性即可 2 批量生成空白檔案 touch 命可以用來...