用 tr 過濾檔案
用 tr 過濾檔案
沒有人曾說過 sed 很容易 — 它確實不容易!
但透過使用 tr,您可以非常容易地實現sed 的許多最基本功能。Jacek Artymiak 向您展示如何去做。
您可以將 tr 看作為 sed 的(極其)簡化的變體:它可以用一個字元來替換另一個字元,或者可以完全除去一些字元。您也可以用它來除去重複字元。這就是所有 tr 所能夠做的。
那麼,為什麼要使用 tr,而不使用 sed 呢?當然是為了使事情簡單。例如,如果我們希望用字母“z”來替換出現的所有字母“a”,則可以用 tr a z ,這條命令毫無疑問比 sed -e s/a/z/g 簡單,尤其在把它用到指令碼中時,其中的引號轉義很讓人頭痛。另外,在使用 tr 時,可以避免寫那些讓人討厭的正規表示式。
使用 tr 很簡單:使用前面一段中所給出的符號表示法,用一個字元去替換出現的所有另一個字元。當需要替換多個字元時,使用類似於這樣的表示法: tr abc xyz ,它表示用字母“x”去替換出現的所有字母“a”,用字母“y”去替換所有字母“b”,用字母“z”去替換所有字母“c”。這兩組中所列出的字元的數目不必相等。
您也可以指定字元的範圍。例如, tr a-z A-Z 將用對應的大寫字母來替換所有的小寫字母(例如,它將“no smoking”轉換成“NO SMOKING”)。當您在 vi 編輯器中想強調正在編輯的文字的某一部分時,使用這一特殊技巧非常方便。只要按一下 Escape 鍵,然後按 : 鍵,再輸入 2,4!tr 'a-z' 'A-Z' ,最後按一下 Return 鍵。現在,從第 2 行到第 4 行的字母就都轉換成了大寫字母。
另外,當有人給您傳送了一個在 Mac OS 或 DOS/Windows 機器上建立的文字檔案時,您會發現 tr 非常有用。如果沒有將檔案儲存為使用 UNIX 換行符來表示行結束這種格式,則需要將這樣的檔案轉換成本機 UNIX 格式,否則一些命令實用程式不會正確地處理這些檔案。Mac OS 的行尾以回車字元結束,許多文字處理工具將這樣的檔案作為一行來處理。為了糾正這個問題,可以用下列技巧:
•Mac -> UNIX: tr 'r' 'n' unixfile
•UNIX -> Mac: tr 'n' 'r' macfile
Microsoft DOS/Windows 約定,文字的每行以回車字元並後跟換行符結束。為了糾正這個問題,可以使用下列命令:
•DOS -> UNIX: tr -d 'r' unixfile
•UNIX -> DOS:在這種情況下,需要用 awk ,因為 tr 不能插入兩個字元來替換一個字元。要使用的 awk 命令為 awk '{ print $0"r" }' dosfile
另外,當您需要對文字檔案做一些簡單的整理工作(如用 tr -d 't' 除去製表符,用 tr -s ' ' 除去多餘的空格,或者用 tr -d 'n' 將分開的幾行合成一行)時,會需要用 tr。同樣,可以在 vi 內使用所有這些命令;只要記住:在 tr 命令前要加上您希望處理的行範圍和感嘆號(!),如 1,$!tr -d 't' (美元符號表示最後一行)中所示。
( 轉自IBM developerWorks 中國 )[@more@]
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/23682146/viewspace-1055757/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- git上傳過濾檔案Git
- java--FilenameFilter檔案過濾器JavaFilter過濾器
- 檔案字尾名的過濾
- struts中配置過濾檔案! (轉)
- input檔案選擇框檔案過濾引數accept
- 【ZIP】打包過濾指定目錄和檔案
- Files.newDirectoryStream掃描/過濾目錄檔案
- 過濾器實現檔案的gzip壓縮過濾器
- linux過濾空檔案的命令總結Linux
- 在指定的檔案過濾想要的內容
- 批處理 壓縮zip 並過濾部分檔案
- maven打包時過濾檔案及排除依賴包Maven
- 一個檔案系統過濾驅動的demo
- java中listFiles(Filefilter filter)檔案過濾器的實現過程JavaFilter過濾器
- Python 通過 .cube LUT 檔案對影像加濾鏡Python
- cat、tail、head、tee、grep、wc、sort檔案操作和過濾AI
- 用Tcpdump過濾資料包TCP
- 過濾Servlet--過濾器Servlet過濾器
- 如何檢視抓包檔案所使用的捕獲過濾器過濾器
- Liunx運維(三)-檔案過濾及內容編輯處理運維
- 過濾器解決檔案上傳下載跨域問題過濾器跨域
- linux下拷貝命令中的檔案過濾操作記錄Linux
- [shell] 利用shell將大批量patch zip檔案過濾出來
- 過濾器應用【編碼、敏感詞、壓縮、轉義過濾器】過濾器
- Redis 應用-布隆過濾器Redis過濾器
- 去掉Query無用的過濾InfoObjectObject
- win10系統下檔案過濾器的使用教程【圖文】Win10過濾器
- Java遞迴遍歷資料夾及檔案過濾器使用(FileFilter)Java遞迴過濾器Filter
- Linux檔案過濾及內容編輯處理命令總結!Linux
- [grep] grep -R -l 遞迴過濾資料夾中檔案內容遞迴
- 過濾
- [20191104]sqlplus 管道檔案 過濾.txtSQL
- 請問如何把檔案中的空行過濾掉(要求命令列實現)命令列
- 第三章 檔案過濾及內容編輯處理命令
- filter過濾Filter
- 過濾器過濾器
- Django(67)drf搜尋過濾和排序過濾Django排序
- 布隆過濾器的原理及應用過濾器