Linux命令學習手冊-tr命令 2015-07-26 20:35 9人閱讀 評論(0) 收藏...

tr [OPTION]... SET1 [SET2]?


[功能]?

轉換或者刪除字符。?


[描述]?

tr指令從標準輸入設備讀取數據,經過字符串轉譯后,輸出到標準輸出設備。?

通過使用 tr,您可以非常容易地實現 sed 的許多最基本功能。您可以將 tr 看作為 sed 的(極其)簡化的變體:它可以用一個字符來替換另一個字符,或者可以完全除去一些字符。您也可以用它來除去重復字符。這就是所有 tr 所能夠做的。?

tr用來從標準輸入中通過替換或刪除操作進行字符轉換。tr主要用于刪除文件中控制字符或進行字符轉換。使用tr時要轉換兩個字符串:字符串1用于查詢,字符串2用于處理各種轉換。tr剛執行時,字符串1中的字符被映射到字符串2中的字符,然后轉換操作開始。?

參數:?

??-c或--complerment?? 取代所有不屬于第一字符集的字符。?

??-d或--delete?? 刪除所有屬于第一字符集的字符。?

??-s或--squeeze-repeats?? 把連續重復的字符以單獨一個字符表示。?

??-t或--truncate-set1?? 這個比較難理解,man上面的解釋是:first truncate SET1 to length of SET2,經過我的實踐發現,將set1的字符依次替換成set2中的字符,如果set1中的字符數目超過set2,那么set1多出的字符忽略。如果沒有-t,那么多出的字符都替換成set2的最后一個字符。?

??--help?? 在線幫助。?

??--version?? 顯示版本信息。?


字符范圍?

指定字符串1或字符串2的內容時,只能使用單字符或字符串范圍或列表。?

[a-z] a-z內的字符組成的字符串。?

[A-Z] A-Z內的字符組成的字符串。?

[0-9] 數字串。?

\octal 一個三位的八進制數,對應有效的ASCII字符。?

[O*n] 表示字符O重復出現指定次數n。因此[O*2]匹配OO的字符串。?

tr中特定控制字符的不同表達方式?

速記符含義八進制方式?

\a Ctrl-G? 鈴聲\007?

\b Ctrl-H? 退格符\010?

\f Ctrl-L? 走行換頁\014?

\n Ctrl-J? 新行\012?

\r Ctrl-M? 回車\015?

\t Ctrl-I? tab鍵\011?

\v Ctrl-X? \030?


[舉例]?

*壓縮文件test內容中重復的字符為一個:?

$tr -s [a-z]<test?< font="" style="word-wrap: break-word;">

這樣,會把文件中每一行的,Set1([a-z])字符串中的重復字符壓縮為一個,并把處理的結果打印到標準輸出,原來的文件不變。?

注意這里,set1集合(也就是第一個參數[a-z])中指定的是字符集合,而不是字符串,所以這里做的是把單個字符的重復給壓縮為一個,而不是字符串的重復。?

例如test有一行是tttt.tgz,那么會變成t.tgz,但是hellohellohello會變成helohelohelo.?


*去掉文件中多余的空行:?

$tr -s "[\012]" < test?

或$tr -s ["\n"]<test?< font="" style="word-wrap: break-word;">

這里,假設原來文件test的內容是:?

111?

222?


333?



444?

運行之后,標準輸出:?

111?

222?

333?

444?

而原來文件的內容不會改變。?


*刪除文件中的^M,并代之以換行:?

$tr -s "[\015]" "[\n]"<test?< font="" style="word-wrap: break-word;">

或$tr -s "[\r]" "[\n]<test?< font="" style="word-wrap: break-word;">

一般來說,windows上面編輯的文件拿到linux上面來沒行的結尾可以會有這樣的符號,實際上直接cat也看不出^M符號。?


*替換文件test中所有冒號,代之以逗號:?

$tr -s "[:]" "[,]"<test?< font="" style="word-wrap: break-word;">

或$tr -s ":" ","<test?< font="" style="word-wrap: break-word;">


*顯示$PATH變量將":"變成回車:?

echo $PATH | tr ":" "\n"?

這里,用 echo $PATH 或者 echo $LD_LIBRARY_PATH 等類似的命令來顯示路徑信息的話,我們看到的將會是一大堆用冒號連接在一起的路徑, tr命令可以把這些冒號轉換為回車,這樣,這些路徑就具有很好的可讀性了.?


*以上命令在vi中進行處理:?

1,$!tr -s ":" ","?

這樣,會直接修改vi編輯的文件,可以在vi內使用所有這些命令!只要記住:在tr命令前要加上您希望處理的行范圍和感嘆號 (!),如 1,$!tr -d '\t'(美元符號表示最后一行)。?


*替換第一個參數字符集之外的字符為指定字符:?

tr -c [boy] "k"<trtest?< font="" style="word-wrap: break-word;">

輸入之后,輸出如下:?

kkkkokboykkookk?

這里,會把屬于第一個參數的字符集中的字符之外的所有,都替換成第二個參數對應的字符。第二個參數必須是單個字符,如果是多個字符,則取最后一個,例如"ka"等價于'a'.?

使用"cat trTest"查看文件的內容如下:?

hello?

boy?

good?


*刪除set1字符集指定的字符:?

$tr -d bld<trtest?< font="" style="word-wrap: break-word;">

或$tr -d [bld]<trtest?< font="" style="word-wrap: break-word;">

輸入之后,輸出如下:?

heo?

oy?

goo?

這樣,會刪除trTest文件中的所有"bld"三個字符。這里使用cat查看trTest文件內容如下:?

$cat trTest?

hello?

boy?

good?


*把文件中的小寫字符轉換成大寫的:?

$tr a-z A-Z<testtr?< font="" style="word-wrap: break-word;">

或$tr [a-z] [A-z]<testtr?< font="" style="word-wrap: break-word;">

輸入之后,輸出如下:?

111?

222?

HELLO?

這里,testTr內容如下:?

111?

222?

hello?


*使用-t替換字符,set1超出set2的部分忽略:?

$tr -t hld boy < trTest?

輸入之后,輸出如下:?

beooo?

boy?

gooy?

這樣,會依次把h,l,d替換成b,o,y如果是hldg那么多出來的字符g忽略,如果沒有-t那么多出來的所有字符被替換成boy的最后一個字符y.?

這里trTest文件的內容:?

$cat trTest?

hello?

boy?

good?


原文:http://blog.chinaunix.net/uid-9525959-id-2001634.html

轉載于:https://www.cnblogs.com/zclzqbx/p/4687041.html

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/397767.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/397767.shtml
英文地址,請注明出處:http://en.pswp.cn/news/397767.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

css商品,商品標簽例子——CSS3 transform 屬性

積累很重要。從此開始記錄前端生涯的點滴....div{width:150px;height:30px;background-color:#f83944;/* Rotate div */transform:rotate(-40deg);-ms-transform:rotate(-40deg); /* Internet Explorer */-moz-transform:rotate(-40deg); /* Firefox */-webkit-transform:rotat…

The literal of int xxxxx is out of range

有時候我們定義了long型的變量&#xff0c;當我們給該變量賦值過長的整數時&#xff0c;系統依然會提示長度超過范圍&#xff0c;解決辦法如下&#xff1a; long timeShow 1437565243495L; 我們需要在整形變量的后面加上“L”&#xff0c;便可以避免系統報錯。轉載于:https://…

debian 訪問 windows 共享_【續】windows環境redis未授權利用方式梳理

01Redis未授權產生原因1.redis綁定在0.0.0.0:6379默認端口&#xff0c;直接暴露在公網&#xff0c;無防火墻進行來源信任防護。2.沒有設置密碼認證&#xff0c;可以免密遠程登錄redis服務02漏洞危害1.信息泄露&#xff0c;攻擊者可以惡意執行flushall清空數據2.可以通過eval執行…

HTML比較常用的標簽

1.全局架構標簽&#xff1a;<html><head><title>標題</title><meta charset"utf-8"></head><body>正文部分</body></html><!--注釋部分-->2.body標簽的屬性bgcolor&#xff1a;背景色text:整個網頁的顏…

sae項目服務器,基于SAE的游戲服務器: Server on SAE for RGSS Games 部署在SAE上的簡易游戲服務器,為用 RMXP/VX/VA 開發的游戲提供網絡服務...

本項目已經關閉服務端已經關閉并且不再重啟&#xff0c;后續請訪問 RGSOS on Gitlab基于SAE的游戲服務器重寫服務端邏輯中……暫時無法正常提供服務功能數據庫封裝封裝了 SAE 上的 Memcached&#xff0c;KVDB 和 Storage 到 SAE_IO 類&#xff0c;并引申到兩個子類&#xff1a;…

1090 Highest Price in Supply Chain (25)

A supply chain is a network of retailers&#xff08;零售商&#xff09;, distributors&#xff08;經銷商&#xff09;, and suppliers&#xff08;供應商&#xff09;-- everyone involved in moving a product from supplier to customer. Starting from one root suppli…

mysql 列數據顯示轉成行數據顯示_Mysql的列修改成行并顯示數據的簡單實現

創建測試表&#xff1a;DROP TABLE IF EXISTS test;CREATE TABLE test (year int(11) DEFAULT NULL,month int(11) DEFAULT NULL,amount double DEFAULT NULL) ENGINEInnoDB DEFAULT CHARSETutf8;插入數據&#xff1a;INSERT INTO test VALUES (1991, 1, 1.1);INSERT INTO test…

Android兩種常見錯誤(ANR和FC)解決辦法

ANR(Activity Not Respone)(無響應)先介紹下Main線程&#xff08;也稱為UI線程、主線程&#xff09;功能: 1.創建UI控件2.更新UI控件狀態3.事件處理限制&#xff1a;Main線程不建議有超過5秒的事件出現條件&#xff1a;當用戶輸入事件5s內沒有得到響應&#xff0c;將彈出ANR對話…

mysql命令(command)

連接mysql命令: mysql -h 192.168.1.1 -P 3306 -uuserName -pPassword 顯示表的索引: SHOW INDDEX FROM table_name 查看mysql的超時時間&#xff1a;SHOW GLOBAL VARIABLES LIKE %timeout% 備份表結構和表數據&#xff1a;mysqldump -u用戶名 -p 庫名 表1 表2 > xxx.sql只…

微信5.0登錄提示服務器繁忙,iOS集成友盟社會化分享微信無法登錄?

iOS集成友盟社會化分享SDK-5.0點擊微信登錄的時候出現無法獲取accessToken的現象&#xff0c;其他如QQ、微博都可以正常登錄使用。另外QQ、微博和微信分享都可以正常使用。望各位早日幫我解決或者分析一下。謝謝//微信登錄之后的回調- (BOOL)application:(UIApplication *)appl…

sql獲取某列出現頻次最多的值_業務硬核SQL集錦

戳上方藍字關注我 這兩年學會了跑sql&#xff0c;當時有很多同學幫助我精進了這個技能&#xff0c;現在也寫成一個小教程&#xff0c;反饋給大家。適用對象&#xff1a;工作中能接觸到sql查詢平臺的業務同學(例如有數據查詢權限的產品與運營同學)適用場景&#xff1a;查詢hive&…

void ,NULL與0的區別聯系

void ,NULL及0的區別聯系 void的詳解: void的字面意思是“無類型”或“空類型”&#xff0c;void*則為“無針型指針”&#xff0c;那就意味著void*可以指向任何類型的數據。 眾所周知&#xff0c;如果指針p1和p2的類型相同&#xff0c;那么我們可以直接在p1和p2間互相賦值&…

python 2 days

1&#xff0c;格式化輸出&#xff0c;%s %d 2&#xff0c;復習昨日講題 編譯型&#xff1a; 將代碼一次性全部編譯成二進制&#xff0c;然后運行。 優點&#xff1a;執行效率高。 缺點&#xff1a;開發效率低&#xff0c;不能跨平臺。 C解釋型&#xff1a; 代碼…

nginx編譯安裝與配置使用

第一部分----nginx基本應用源碼編譯安裝nginx1、安裝pcre軟件包&#xff08;使nginx支持http rewrite模塊&#xff09;yum install -y pcre yum install -y pcre-devel2、安裝openssl-devel&#xff08;使nginx支持ssl&#xff09;yum install -y openssl-devel3、創建用戶ngin…

ubuntu+查看服務器文件夾權限,Ubuntu - 文件夾權限查看與修改

Ubuntu 文件的歸屬身份有四種&#xff1a;u - 擁有文件的用戶(所有者)g - 所有者所在的組群o - 其他人(不是所有者或所有者的組群)a - 每個人或全部(u, g, o)1. 查看文件/文件夾權限ls -l filename # 查看文件權限ls -ld folder # 查看文件夾權限輸出結果如&#xff1a;drwxrwx…

mysql dump 1449_跨版本mysqldump恢復報錯Errno1449

已經有一套主從mysql,新增兩個slave主庫Server version: 5.6.22-log MySQL Community Server (GPL)舊從庫Server version: 5.6.28-log MySQL Community Server (GPL)新增SLAVE 1&#xff1a; Server version: 5.6.22-log MySQL Community Server (GPL)新增SLAVE 2&#xff1a; …

修復 Xcode 錯誤 “The identity used to sign the executable is no longer valid”

如圖&#xff1a; 解決方法來自&#xff1a;http://stackoverflow.com/questions/7088441/the-identity-used-to-sign-the-executable-is-no-longer-valid/14275197 Restarting Xcode didnt work for me. What fixed it for me was going to Accounts in Xcode (in preferences…

centos設置ip

這里是centos7.vmware安裝centos后需要設置ip 1.首先查看虛擬機的網絡適配器信息 2.根據信息修改配置文件 vi /etc/sysconfig/network-scripts/ifcfg-ens33 圖為修改后的,最初的配置為 BOOTPROTOdhcp ONBOOTno IPADDR,GATEWAY,NETMASK沒有進行配置需要根據網絡適配器配置手動維…

微信支付+服務器+php代碼,php 微信支付企業付款(示例代碼)

/*** 格式化參數格式化成url參數*/public function ToUrl($arr){$buff "";foreach ($arr as $k > $v){if($k ! "sign" && $v ! "" && !is_array($v)){$buff . $k . "" . $v . "&";}}$buff trim($b…

Spark踩坑記——數據庫(Hbase+Mysql)轉

轉自&#xff1a;http://www.cnblogs.com/xlturing/p/spark.html 前言 在使用Spark Streaming的過程中對于計算產生結果的進行持久化時&#xff0c;我們往往需要操作數據庫&#xff0c;去統計或者改變一些值。最近一個實時消費者處理任務&#xff0c;在使用spark streaming進行…