tr用來從標准輸入中通過替換或刪除操作進行字符轉換
t r主要用於刪除文件中控制字符或進行字符轉換
使用t r時要轉換兩個字符串
字符串
用於查詢
字符串
用於處理各種轉換
t r剛執行時
字符串
中的字符被映射到字符串
中的字符
然後轉換操作開始
本章內容有
* 大小寫轉換
* 去除控制字符
* 刪除空行
帶有最常用選項的t r命令格式為
t r
c
d
s [
s t r i n g
_ t o _ t r a n s l a t e _ f r o m
] [
s t r i n g
_ t o _ t r a n s l a t e _ t o
] i n p u t _
f i l e
這裡
c 用字符串
中字符集的補集替換此字符集
要求字符集為A S C I I
d 刪除字符串
中所有輸入字符
s 刪除所有重復出現字符序列
只保留第一個
即將重復出現字符串壓縮為一個字符
串
I n p u t
f i l e是轉換文件名
雖然可以使用其他格式輸入
但這種格式最常用
字符范圍
使用t r時
可以指定字符串列表或范圍作為形成字符串的模式
這看起來很像正則表達式
但實際上不是
指定字符串
或字符串
的內容時
只能使用單字符或字符串范圍或列表
[a
z] a
z內的字符組成的字符串
[A
Z] A
Z內的字符組成的字符串
[
] 數字串
/octal 一個三位的八進制數
對應有效的A S C I I字符
[O*n] 表示字符O重復出現指定次數n
因此[ O *
]匹配O O的字符串
大部分t r變種支持字符類和速記控制字符
字符類格式為[
c l a s s ]
包含數字
希臘字母
空行
小寫
大寫
c n t r l鍵
空格
點記符
圖形等等
表
包括最常用的控制字符的速記方式及三位八進制引用方式
當用一個單字符替換一個字符串或字符范圍時
注意字符並不放在方括號裡( [ ])
一些系統也可以使用方括號
例如可以寫成[
\
]或
\
t r也允許不加引號
因此命令中看到單引號而不是雙引號時也不要感到奇怪
像大多數系統工具一樣
t r也受特定字符的影響
因此如果要匹配這些字符
需使用反斜線屏蔽其特殊含義
例如
用\ {指定花括號左邊可以屏蔽其特殊含義
表
tr中特定控制字符的不同表達方式
速記符含義八進制方式
\ a Ctrl
G 鈴聲\
\ b Ctrl
H 退格符\
\f Ctrl
L 走行換頁\
\n Ctrl
J 新行\
\ r Ctrl
M 回車\
\t Ctrl
I tab鍵\
\ v Ctrl
X \
保存輸出
要保存輸出結果
需將之重定向到一個文件
下面的例子重定向輸出到文件r e s u l t s
t x t
輸入文件是c o p s
t x t
現在看一些例子
去除重復出現的字符
下面文件包含了一些打印錯誤
這種情況時常發生
例如在v i編輯器中
偶爾按住一個鍵不放
如果要去除重復字母或將其壓縮在一起
使用
s選項
因為都是字母
故使用[ a
z ]
輸入文件重定向到t r命令
所有重復字符被壓縮成一個
如果使用c a t命令
再將結果管道輸出至t r
結果是一樣的
刪除空行
要刪除空行
可將之剔出文件
下面是一個文件p l a n e
t x t
文本間有許多空行
使用
s來做這項工作
換行的八進制表示為\
命令為
也可以使用換行速記方式\ n
這裡用單引號(通常用雙引號)
大寫到小寫
除了刪除控制字符
轉換大小寫是t r最常用的功能
為此需指定即將轉換的小寫字符[ a
z ]
和轉換結果[ A
Z ]
第一個例子
t r從一個包含大小寫字母的字符串中接受輸入
同樣
也可以使用字符類[
l o w e r
]和[
u p p e r
]
將文本文件大寫轉換為小寫並輸出至一個新文件
格式為
這裡f i l e
t o
t r a n s l a t e保存即將轉換的文件
n e w
f i l e
n a m e為保存結果的新文件名
例如
小寫到大寫
轉換小寫到大寫與上一節大寫到小寫過程剛好相反
以下有兩個例子
將文本文件從小寫轉換為大寫並將結果存入一個新文件
格式為
f i l e
t o
t r a n s l a t e保存即將轉換的文件
n e w
f i l e
n a m e保存結果文件
例如
刪除指定字符
偶爾會從下載文件中刪除只包含字母或數字的列
需要結合使用
c和
s選項完成此功能
下面的文件包含一個星期的日程表
任務是從其中刪除所有數字
只保留日期
日期有大寫
也有小寫格式
因此需指定兩個字符范圍[ a
z ]和[ A
Z ]
命令tr
cs
[a
z][A
Z]
[\
*]
將文件每行所有不包含在[ a
z ]或[ A
Z ](所有希臘字母)的字符串放在字符串
中並轉換為一新行
s選項表明壓縮所有新行
c表明保留所有字母不動
原文件如下
後跟t r命令
轉換控制字符t r的第一個功能就是轉換控制字符
特別是從d o s向U N I X下載文件時
忘記設置f t p關於回車換行轉換的選項時更是如此
下面是故意沒有設置轉換開關的一個文本文件
是關於文具需求的一部分內容
使用c a t
v顯示控制字符
猜想
^ ^ ^ ^ ^ ^
是t a b鍵
每一行以C t r l
M結尾
文件結尾C t r l
Z
以下是改動方法
使用
s選項
查看A S C I I表
^的八進制代碼是
^ M是
t a b鍵是
^ Z是
下面將按步驟完成最終功能
用t a b鍵替換^ ^ ^ ^ ^ ^
命令為
\
[ \
* ]
將結果重定向到臨時工作文件s t a t
t m p
用新行替換每行末尾的^ M
並用\ n去除^ Z
輸入要來自於臨時工作文件s t a t
t m p
最後去除所有的控制字符
文件就可以使用了
快速轉換
如果需要刪除文件中^ M
並代之以換行
使用命令
或者用下述命令得同樣結果
也可以用下述命令
另一個一般的D o s到U N I X轉換是命令
將刪除所有^ M和^ Z
代之以換行
要刪除所有的t a b鍵
代之以空格
使用命令
替換p a s s w d文件中所有冒號
代之以t a b鍵
可以增加可讀性
將冒號引起來
指定替換字符串中t a b鍵八進制值
下面是p a s s w d文件
後跟t r命令結果
或者用下述命令得同樣結果
這裡使用t a b鍵的速記符
匹配多於一個字符
可以使用[ c h a r a c t e r * n ]格式匹配多於一個字符
下述文件列出系統硬盤信息
其中包含了
系統已經注冊的和未識別的
第一列是數字
如果不全是
表明第二列相應硬盤已經注冊
有時全部為
看起來很煩人
找個吸引人注意力的符號來代替它
以便一眼就能看出哪個硬盤已注冊
哪個不可識別
原文件如下
從文件列表中知道
有一個硬盤未注冊
因此用星號代替所有的
模式為[
*
]
意即匹配至少
個
替換字符串為星號
過濾命令及結果如下
現在從文件中可以直接看出哪個未注冊
小結
t r主要用於字符轉換或者抽取控制字符
本章所有功能都可以用s e d來完成
但有些人寧願使用t r
因為t r更加快捷
容易
From:http://tw.wingwit.com/Article/program/Oracle/201311/16707.html