歡迎來到Linux教程網
Linux教程網
Linux教程網
Linux教程網
Linux教程網 >> Linux基礎 >> Linux教程 >> Linux 命令學習示例: tr

Linux 命令學習示例: tr

日期:2017/2/28 14:54:19   编辑:Linux教程

在《如何學習 Linux 命令和工具》 http://www.linuxidc.com/Linux/2013-01/77278.htm 中,簡要地談了下學習 linux 命令的一些基本方法和注意事項。 本文將以一些命令為例, 來談談如何具體地學習某個 linux 命令。注意,本文的重點不在命令本身,而在於命令的學習方法上。給人一蘿筐魚不如教人一套行之有效的捕魚之法。

示例一: tr

(1) 先查看幫助信息, tr --help 或 man tr :

用法:tr [選項]... SET1 [SET2]
從標准輸入中替換、縮減和/或刪除字符,並將結果寫到標准輸出。

-c, -C, --complement 首先補足SET1
-d, --delete 刪除匹配SET1 的內容,並不作替換
-s, --squeeze-repeats 如果匹配於SET1 的字符在輸入序列中存在連續的
重復,在替換時會被統一縮為一個字符的長度
-t, --truncate-set1 先將SET1 的長度截為和SET2 相等
--help 顯示此幫助信息並退出
--version 顯示版本信息並退出

可知該命令主要是用來作字符過濾處理的。由於選項放在方括號中,是可選的。先不使用任何選項:

$:~/csat/packages$ tr 'eaiou' 'fbjpv'
i have a dream
j hbvf b drfbm

從結果中可以看到, tr 是用作字符轉換的(以字符為轉換單位,而不是字符序列), 將前面指定的字符集中定義的字符的所有出現替換成後面指定的字符集中位置相對應的字符的出現。看上去可以用作小小的加密方式哦。 試一試位置長度不匹配的情形:

a. SET1 長度小於 SET2 : 看上去好像沒影響

$:~/csat/packages$ tr 'eaiou' 'fbjpvt'
i have a dream , and you ?
j hbvf b drfbm , bnd ypv ?

b. SET1 長度大於 SET2: SET1 按位置對應多出的字符的出現都被替換成 SET2 的最後一個字符的出現

$:~/csat/packages$ tr 'eaiou' 'fbjp'
i love you, u know ?
j lpvf ypp, p knpw ?

o,u 都替換成 p 了。 -t 選項看上有點關聯,試試:

$:~/csat/packages$ tr -t 'eaiou' 'fbj'
i love you
j lovf you

現在 o, u 都不再被替換了。 可以理解 -t 的作用了。 它實際上是執行命令 tr 'eai' 'fbj' , 將 'eaiou' 截成與 'fbj' 等長,保留前面的部分。

由於選項比較少,可以一個個地嘗試下:

$:~/csat/packages$ tr -d 'ea'
i have a good dream.
i hv good drm.
^C

該選項是從給定輸入中刪除給定字符集中定義的所有字符('e','a')的所有單個的出現, 而不是刪除字符組合 ea. 這是刪除功能;

Copyright © Linux教程網 All Rights Reserved