前幾篇文章介紹了幾個用於處理字元的命令和工具,然而在處理大小寫轉換、刪除重複字元等任務時,這些命令處理起來相對較為麻煩。這裡將簡單介紹linux下自帶的tr命令,相對於其他命令而言,其語法較為簡單,比較方便記憶。
tr命令用於處理字元轉換、刪除重複字元等任務。
tr [option] [string1] [string2]
在tr的基本命令格式中,string1用於查詢字串,string2用於轉換查詢到的字串。tr命令不能讀取檔案,如果要轉換檔案中的內容,可以使用重定向輸入或管道的方法。
c:使用string1字符集中的補集替換,要求的字符集為ascii。
d:刪除string1中包含的所有字元。
s:將所有重複出現的字元進行壓縮,只保留乙個字元,即刪除重複的字元。
在使用tr命令時,還需要指定string1和string2這兩個格式化字串,字串的形式可以是字元的範圍、單個字元、多字元列表等。常見的字串形式及其含義如下:
[a-z]:小寫字母a-z範圍內的字元及其組合而成的字串。
[a-z]:大寫字母a-z範圍內的字元及其組合而成的字串。
[0-9]:數字0-9範圍內的字元及其組合。
[c*n]:這個表示式中,c表示字元或字元組合,n表示重複出現的次數。即字元或字元組合出現n次的字串。
除了以上這些常見的字串形式以外,tr命令還支援在字串中查詢和處理一些特殊的字元,這些字元通常都使用乙個八進位制數字表示。常見的特殊字元及其對應的八進位制表示形式如下:
\012:新的一行,在其他命令中經常使用\n表示。
\011:相當於乙個tab鍵,有些命令使用\t表示。
\015:enter鍵(即換行符),在其他命令中經常使用\r表示。
\014:新的一頁,在其他命令中經常使用\f表示。
使用命令時,最常見的任務是對乙個字串執行轉換。
(1)最常見的字串轉換是大小寫的轉換。例如需要將乙個字串中的字元全部轉換為大寫:
[root@localhost test]# echo "this is a test string.
" | tr -s "
[a-z]""
[a-z]
"this is a test string.
[root@localhost test]# cat testthis
isthe first line.
this
isthe second line.
[root@localhost test]# tr -s "
[a-z]""
[a-z]
"this is the first line.
this is the second line.
[root@localhost test]# cat test
this
isthe first line.
this
is the second line.
原檔案test中的文字並沒有改變。
(3)除了可以使用[a-z]、[a-z]這樣的形式外,還可以使用乙個列表的形式。例如需要將test中的小寫字母tfls轉換成大寫字母:
[root@localhost test]# tr -s "tfls""
tfls
"this is the first line.
this is the second line.
注意:列表中的字元是一一對應的(t-t、f-f、l-l、s-s),另外需要注意此處列表與正規表示式中的列表的區別。
(4)除此之外,tr命令還可以對文字進行格式轉換,例如:
[root@localhost test]# cat test12821020225#liulu#0#a#b#0
\2821020115#liumi#b#c#0#0
\2721020321#xuli#0#d#a#0
\2921020632#xiayu#a#c#0#0
\2721010409#liwei#b#c#0
#d\2921050313#heli#b#0#d#0
\2721030227#wangtao#c#0#d#0
\[root@localhost test]# tr -s "#"
"\t"2821020225 liulu 0 a b 0
\2821020115 liumi b c 00\
2721020321 xuli 0 d a 0
\2921020632 xiayu a c 00\
2721010409 liwei b c 0
d\2921050313 heli b 0 d 0
\2721030227 wangtao c 0 d 0\
tr命令的另乙個重要功能是用來刪除字元,包括刪除重複字元和自定義的字符集等。
(1)使用tr命令刪除重複字元時,需要指定字串或文字中可能存在重複的字元集合,因此僅需要使用string1即可。例如:
[root@localhost test]# echo "hhhheeeelloo
" | tr -s "
heo"
hello
(2)還可以使用乙個巨大的字符集刪除可能存在的重複字元。例如要刪除所有字母的重複:
[root@localhost test]# echo "hhhheeeellooo
" | tr -s "
[a-z][a-z]
"helo
[root@localhost test]# cat test2abc[root@localhost test]# tr -s "\n"
c
(4)也可使用八進位制數表示特殊字元。刪除多餘空行的命令也可以寫成:
[root@localhost test]# tr -s "\012
"c
(5)tr命令還可以用來刪除特定的字符集:
[root@localhost test]# echo "my name is jhon.
" | tr -d "
msn"
my ae i jho.
注意:tr命令在處理替換和刪除時,採用逐字元查詢處理的方法。
轉換和刪除重複命令tr
前幾篇文章介紹了幾個用於處理字元的命令和工具,然而在處理大小寫轉換 刪除重複字元等任務時,這些命令處理起來相對較為麻煩。這裡將簡單介紹linux下自帶的tr命令,相對於其他命令而言,其語法較為簡單,比較方便記憶。tr命令用於處理字元轉換 刪除重複字元等任務。tr option string1 str...
tr 轉換和刪除字元
常見選項 d delete 刪除所有屬於第一字符集的字元 s squeeze repeats 把連續重複的字元以單獨乙個字元表示,即去重 t truncate set1 將第乙個字符集對應字元轉化為第二字符集對應的字元 c c complement 取字符集的補集 範例 該命令會把 etc issu...
Linux 字元轉換命令tr
tr traslate的縮寫 可以用來刪除一段資訊當中的文字,或者是進行文字資訊的替換!root www tr ds set1 選項與引數 d 刪除資訊當中的 set1 這個字串 s 取代掉重複的字元!範例一 將 last 輸出的資訊中,所有的小寫變成大寫字元 root www last tr a ...