df -h | tr -s ' ' | cut -f5 -d' '
[root@pacteralinux testshell]# df -h | tr -s ' '
Filesystem Size Used Avail Use% Mounted on
/dev/sda1 29G 23G 4.7G 83% /
tmpfs 776M 0 776M 0% /dev/shm
/dev/sdb1 69G 180M 66G 1% /mnt/resource
/dev/sdc1 362G 195M 344G 1% /usr/local/Tomcat_Trans/webapps/infoSocketService/logs
/dev/sdc2 131G 9.3G 115G 8% /mnt/mntsdc2formysql
[root@pacteralinux testshell]# df -h | tr -s ' ' | cut -f5 -d' '
Use%
83%
0%
1%
1%
8%
[root@pacteralinux testshell]#
命令簡介:
通過使用tr生蚁,您可以非常容易地實(shí)現(xiàn) sed 的許多最基本功能辈毯。您可以將 tr 看作為 sed的(極其)簡化的變體:它可以用一個字符來替換另一個字符,或者可以完全除去一些字符节猿。您也可以用它來除去重復(fù)字符。這就是所有 tr所能夠做的。
tr用來從標(biāo)準(zhǔn)輸入中通過替換或刪除操作進(jìn)行字符轉(zhuǎn)換翻诉。tr主要用于刪除文件中控制字符或進(jìn)行字符轉(zhuǎn)換。使用tr時要轉(zhuǎn)換兩個字符串:字符串1用于查詢捌刮,字符串2用于處理各種轉(zhuǎn)換碰煌。tr剛執(zhí)行時,字符串1中的字符被映射到字符串2中的字符绅作,然后轉(zhuǎn)換操作開始芦圾。
用法:
tr -c -d -s ["string1_to_translate_from"]["string2_to_translate_to"] < input-file
這里:
-c 用字符串1中字符集的補(bǔ)集替換此字符集,要求字符集為ASCII俄认。
-d 刪除字符串1中所有輸入字符个少。
-s 刪除所有重復(fù)出現(xiàn)字符序列,只保留第一個眯杏;即將重復(fù)出現(xiàn)字符串壓縮為一個字符串稍算。
input-file是轉(zhuǎn)換文件名。雖然可以使用其他格式輸入役拴,但這種格式最常用糊探。
2、字符范圍
指定字符串1或字符串2的內(nèi)容時河闰,只能使用單字符或字符串范圍或列表科平。
[a-z] a-z內(nèi)的字符組成的字符串。
[A-Z] A-Z內(nèi)的字符組成的字符串姜性。
[0-9] 數(shù)字串瞪慧。
\octal 一個三位的八進(jìn)制數(shù),對應(yīng)有效的ASCII字符部念。
[On] 表示字符O重復(fù)出現(xiàn)指定次數(shù)n弃酌。因此[O2]匹配OO的字符串。
tr中特定控制字符的不同表達(dá)方式
速記符含義八進(jìn)制方式
\a Ctrl-G 鈴聲\007
\b Ctrl-H 退格符\010
\f Ctrl-L 走行換頁\014
\n Ctrl-J 新行\(zhòng)012
\r Ctrl-M 回車\015
\t Ctrl-I tab鍵\011
\v Ctrl-X \030
實(shí)例:
1儡炼、將文件file中出現(xiàn)的"abc"替換為"xyz"
cat file | tr "abc" "xyz" > new_file
【注意】這里妓湘,凡是在file中出現(xiàn)的"a"字母,都替換成"x"字母乌询,"b"字母替換為"y"字母榜贴,"c"字母替換為"z"字母。而不是將字符串"abc"替換為字符串"xyz"妹田。
2唬党、使用tr命令“統(tǒng)一”字母大小寫
(小寫 --> 大寫)
cat file | tr [a-z] [A-Z] > new_file
(大寫 --> 小寫)
cat file | tr [A-Z] [a-z] > new_file
3鹃共、把文件中的數(shù)字0-9替換為a-j
cat file | tr [0-9] [a-j] > new_file
4、刪除文件file中出現(xiàn)的"Snail"字符
cat file | tr -d "Snail" > new_file
【注意】這里驶拱,凡是在file文件中出現(xiàn)的'S','n','a','i','l'字符都會被刪除霜浴!而不是緊緊刪除出現(xiàn)的"Snail”字符串。
5蓝纲、刪除文件file中出現(xiàn)的換行'\n'思瘟、制表'\t'字符
cat file | tr -d "\n\t" > new_file
不可見字符都得用轉(zhuǎn)義字符來表示的峦萎,這個都是統(tǒng)一的掺出。
6毅桃、刪除“連續(xù)著的”重復(fù)字母,只保留第一個
cat file | tr -s [a-zA-Z] > new_file
[root@uyhd000225 commtest]# cat trtest |tr -s [a-zA-Z]>trtest_new
[root@uyhd000225 commtest]# more trtest_new
abcdefbfgjdkxfdgj
[root@uyhd000225 commtest]# more trtest
abcdefbfgjdkkxfdgj
7翁狐、刪除空行
cat file | tr -s "\n" > new_file
8类溢、刪除Windows文件“造成”的'^M'字符
cat file | tr -d "\r" > new_file
或者
cat file | tr -s "\r" "\n" > new_file
【注意】這里-s后面是兩個參數(shù)"\r"和"\n",用后者替換前者
9露懒、用空格符\040替換制表符\011
cat file | tr -s "\011" "\040" >new_file
10闯冷、把路徑變量中的冒號":",替換成換行符"\n"
echo $PATH | tr -s ":" "\n"
=============================================
(1)去除oops.txt里面的重復(fù)的小寫字符
tr -s "[a-z]"<oops.txt >result.txt
(2)刪除空行
tr -s "[\012]" < plan.txt 或 tr -s ["\n"] < plan.txt
(3)有時需要刪除文件中的^M懈词,并代之以換行
tr -s "[\015]" "[\n]" < file 或 tr -s "[\r]" "[\n]" < file
(4)大寫到小寫
cat a.txt |tr "[a-z]" "[A-Z]" >b.txt
(5)刪除指定字符
一個星期的日程表任務(wù)是從其中刪除所有數(shù)字蛇耀,只保留日期日期有大寫,也有小寫格式因此需指定兩個字符范圍[a-z]和[A-Z]坎弯,命令tr -cs "[a-z][A-Z]" "[\012]" 將文件每行所有不包含在[a-z]或[A-Z](所有希臘字母)的字符串放在字符串1中并轉(zhuǎn)換為一新行-s選項(xiàng)表明壓縮所有新行纺涤, -c表明保留所有字母不動原文件如下,后跟tr命令:
tr -cs "[a-z][A-Z]" "[\012]" stat.tmp
用新行替換每行末尾的M抠忘,并用\n去除Z撩炊,輸入要來自于臨時工作文件stat.tmp
tr -s "[\015][\032]" "\n" <stat.tmp
要刪除所有的tab鍵,代之以空格崎脉,使用命令
tr -s "[\011]" "[\040*]" <input.file
(7)替換passwd文件中所有冒號拧咳,代之以tab鍵,可以增加可讀性
tr -s "[:]" "[\011]" < /etc/passwd 或 tr -s "[:]" "[\t]" < /etc/passwd
(8)使路徑具有可讀性
如果用 echo $PATH 或者 echo $LD_LIBRARY_PATH 等類似的命令來顯示路徑信息的話囚灼,我們看到的將會是一大堆用冒號連接在一起的路徑骆膝, tr命令可以把這些冒號轉(zhuǎn)換為回車,這樣灶体,這些路徑就具有很好的可讀性了
echo $PATH | tr ":" "\n"
(9)可以在vi內(nèi)使用所有這些命令阅签!只要記住:在tr命令前要加上您希望處理的行范圍和感嘆號 (T叽骸)愉择,如 1,$!tr -d '\t'(美元符號表示最后一行)
(10)另外劫乱,當(dāng)有人給您發(fā)送了一個在 Mac OS 或 DOS/Windows 機(jī)器上創(chuàng)建的文本文件時织中,您會發(fā)現(xiàn)tr非常有用
如果沒有將文件保存為使用 UNIX 換行符來表示行結(jié)束這種格式锥涕,則需要將這樣的文件轉(zhuǎn)換成本機(jī) UNIX 格式,否則一些命令實(shí)用程序不會正確地處理這些文件Mac OS 的行尾以回車字符(\r)結(jié)束狭吼,許多文本處理工具將這樣的文件作為一行來處理為了糾正這個問題层坠,可以用下列技巧:
Mac -> UNIX:tr "\r" "\n"<macfile > unixfile
UNIX -> Mac:tr "\n" "\r"<unixfile > macfile
Microsoft DOS/Windows 約定,文本的每行以回車字符(\r)并后跟換行符(\n)結(jié)束為了糾正這個問題刁笙,可以使用下列命令:
DOS -> UNIX:tr -d "\r" unixfile
UNIX -> DOS:在這種情況下破花,需要用awk,因?yàn)閠r不能插入兩個字符來替換一個字符要使用的 awk 命令為 awk '{ print $0"\r" }'<unixfile > dosfile
注:都可以用sed 來完成
=======================================
用途
轉(zhuǎn)換字符疲吸。
語法
tr [ -c | -cds | -cs | -C | -Cds | -Cs | -ds | -s ] [ -A ] String1String2
tr { -cd | -cs | -Cd | -Cs | -d | -s } [ -A ] String1
描述
tr 命令從標(biāo)準(zhǔn)輸入刪除或替換字符座每,并將結(jié)果寫入標(biāo)準(zhǔn)輸出。根據(jù)由 String1 和 String2 變量指定的字符串以及指定的標(biāo)志摘悴,tr 命令可執(zhí)行三種操作峭梳。
轉(zhuǎn)換字符
如果 String1 和 String2 兩者都已指定,但 -d 標(biāo)志沒有指定蹂喻,那么 tr 命令就會從標(biāo)準(zhǔn)輸入中將 String1 中所包含的每一個字符都替換成 String2 中相同位置上的字符葱椭。
===============================
表達(dá)字符串的特殊序列
String1 和 String2 變量中所包含的字符串可以使用以下的約定來表示:
C1-C2 指定了 C1 所指定的字符和 C2 所指定的字符之間(包括 C1 和 C2)進(jìn)行整理的字符串。C1 所指定的字符必須整理放在由 C2 所指定的字符之前口四。
注:
在使用本方法指定子范圍時孵运,當(dāng)前語言環(huán)境對結(jié)果有重要影響。如果需要用命令來產(chǎn)生與語言環(huán)境無關(guān)的一致結(jié)果蔓彩,那么應(yīng)該避免使用子范圍治笨。
[CNumber] Number 是一個整數(shù),它指定了由 C 所指定的字符的重復(fù)次數(shù)赤嚼。除非其首位數(shù)字是 0大磺,否則 Number 一律視為是十進(jìn)制整數(shù);如果首位數(shù)字是 0探膊,那么視為八進(jìn)制整數(shù)杠愧。
[C] 用 C 指定的字符填寫字符串。該選項(xiàng)只用于包含在 String2 中的字符串末尾逞壁,它強(qiáng)制 String2 中的字符串具有與由 String1 變量所指定的字符串一樣的字符數(shù)流济。*(星號)后面指定的任何字符都被忽略。
[ :ClassName: ] 指定由當(dāng)前語言環(huán)境中的 ClassName 所命名的字符類中的所有字符腌闯。類名可以是下述名稱中的任何一種:
alnum lower
alpha print
blank punct
cntrl space
digit upper
graph xdigit
除 [:lower:] 和 [:upper:] 轉(zhuǎn)換字符類之外绳瘟,其他字符類指定的字符都按未指定的順序放入數(shù)組中。由于未定義字符類指定的字符的順序姿骏,僅當(dāng)目的為將多個字符映射為一個時才使用這些字符糖声。轉(zhuǎn)換字符類除外。
有關(guān)字符類的詳細(xì)情況,請參閱 ctype 子例程蘸泻。
[ =C= ] 指定所有的字符具有與 C 所指定的字符相同的等價類琉苇。
\Octal 指定字符,其編碼由 Octal 所指定的八進(jìn)制值表示悦施。Octal 可以是 1 位并扇、2 位 或 3 位八進(jìn)制整數(shù)÷盏空字符可以用 '\0' 表示穷蛹,并可以像任何其他的字符那樣進(jìn)行處理。
\ControlCharacter 指定與 ControlCharacter 所指定的值相應(yīng)的控制字符昼汗‰妊可以表示以下值:
\a
警告
\b
退格鍵
\f
換頁
\n
換行
\r
回車
\t
制表鍵
\v
垂直制表鍵
\ 規(guī)定 ""(反斜杠)就是作反斜杠使用,而無作為轉(zhuǎn)義字符的任何特殊意義顷窒。
[ 指定“[”(左括號)就作為左括號使用扮超,而無作為特定字符串序列的開始字符的任何特殊意義。
- 指定“-”(負(fù)號)就作為負(fù)號使用蹋肮,而無作為范圍分隔符的任何特殊意義出刷。
如果某個字符在 String1 中被指定過多次,那么該字符就被轉(zhuǎn)換成 String2 中為與 String1 中最后出現(xiàn)的字符相對應(yīng)的字符坯辩。
如果由 String1 和 String2 指定的字符串長度不相同馁龟,那么 tr 命令就會忽略較長一個字符串中的多余字符。
標(biāo)志
-A 使用范圍和字符類 ASCII 整理順序漆魔、一個字節(jié)一個字節(jié)地執(zhí)行所有操作坷檩,而不是使用當(dāng)前語言環(huán)境整理順序。
-C 指定 String1 值用 String1 所指定的字符串的補(bǔ)碼替換改抡。String1 的補(bǔ)碼是當(dāng)前語言環(huán)境的字符集中的所有字符矢炼,除了由 String1 指定的字符以外。如果指定了 -A 和 -c 標(biāo)志都已指定阿纤,那么與所有 8 位字符代碼集合有關(guān)的字符將被補(bǔ)足句灌。如果指定了 -c 和 -s 標(biāo)志,那么 -s 標(biāo)志適用于 String1 的補(bǔ)碼中的字符欠拾。
如果沒有指定 -d 選項(xiàng)胰锌,那么由 String1 指定的字符的補(bǔ)碼將放置到升序排列的數(shù)組中(如 LC_COLLATE 的當(dāng)前設(shè)置所定義)。
-c 指定 String1 值用 String1 所指定的字符串的補(bǔ)碼替換藐窄。String1 的補(bǔ)碼是當(dāng)前語言環(huán)境的字符集中的所有字符资昧,除了由 String1 指定的字符以外。如果指定了 -A 和 -c 標(biāo)志都已指定荆忍,那么與所有 8 位字符代碼集合有關(guān)的字符將被補(bǔ)足格带。如果指定了 -c 和 -s 標(biāo)志撤缴,那么 -s 標(biāo)志適用于 String1 的補(bǔ)碼中的字符。
如果沒有指定 -d 選項(xiàng)叽唱,那么由 String1 指定的值的補(bǔ)碼將放置到通過二進(jìn)制值升序排列的數(shù)組中屈呕。
-d 從標(biāo)準(zhǔn)輸入刪除包含在由 String1 指定的字符串中的每個字符。
注:
- 當(dāng) -C 選項(xiàng)和 -d 選項(xiàng)一起指定時尔觉,將刪除所有除 String1 指定的那些字符以外的字符凉袱。忽略 String2 的內(nèi)容芥吟,除非也指定了 -s 選項(xiàng)侦铜。
- 當(dāng) -c 選項(xiàng)和 -d 選項(xiàng)一起指定時,將刪除所有除 String1 指定的那些字符以外的字符钟鸵。忽略 String2 的內(nèi)容钉稍,除非也指定了 -s 選項(xiàng)。
-s 在重復(fù)字符序列中除去除第一個字符以外的所有字符棺耍。將 String1 所指定的字符序列在轉(zhuǎn)換之前從標(biāo)準(zhǔn)輸入中除去贡未,并將 String2 所指定的字符序列從標(biāo)準(zhǔn)輸出中除去。
String1 指定一個字符串蒙袍。
String2 指定一個字符串俊卤。
退出狀態(tài)
該命令返回以下退出值:
所有輸入處理成功。
0 發(fā)生錯誤害幅。
示例
若要將大括號轉(zhuǎn)換為小括號消恍,請輸入:
tr '{}' '()' < textfile > newfile
這便將每個 {(左大括號)轉(zhuǎn)換成 ((左小括號),并將每個 }(右大括號)轉(zhuǎn)換成 )(右小括號)以现。所有其他的字符都保持不變狠怨。
若要將大括號轉(zhuǎn)換成方括號,請輸入:
tr '{}' '[]' < textfile > newfile
這便將每個 {(左大括號)轉(zhuǎn)換成 [(左方括號)邑遏,并將每個 }(右大括號)轉(zhuǎn)換成 ](右方括號)佣赖。左方括號必須與一個 ""(反斜扛)轉(zhuǎn)義字符一起輸入。
若要將小寫字符轉(zhuǎn)換成大寫记盒,請輸入:
tr 'a-z' 'A-Z' < textfile > newfile
若要創(chuàng)建一個文件中的單詞列表憎蛤,請輸入:
tr -cs '[:lower:][:upper:]' '[\n]' < textfile > newfile
這便將每一序列的字符(小、大寫字母除外)都轉(zhuǎn)換成單個換行符纪吮。(星號)可以使 tr 命令重復(fù)換行符足夠多次以使第二個字符串與第一個字符串一樣長蹂午。
若要從某個文件中刪除所有空字符,請輸入:
tr -d '\0' < textfile > newfile
若要用單獨(dú)的換行替換每一序列的一個或多個換行彬碱,請輸入:
tr -s '\n' < textfile > newfile
或
tr -s '\012' < textfile > newfile
若要以“豆胸?”(問號)替換每個非顯示字符(有效控制字符除外),請輸入:
tr -c '[:print:][:cntrl:]' '[?*]' < textfile > newfile
這便對不同語言環(huán)境中創(chuàng)建的文件進(jìn)行掃描巷疼,以查找當(dāng)前語言環(huán)境下不能顯示的字符晚胡。
要以單個“#”字符替換 <space> 字符類中的每個字符序列灵奖,請輸入:
tr -s '[:space:]' '[#*]'
ls | tr ‘\n’ ” 將換行符替換成空格
tr f F < huanxiangwu.txt 將文件中的所有f替換成F
ls | tr -d ‘\n’ 刪除換行符(所有內(nèi)容拼接成一行)
tr -d f < huanxiangwu.txt 刪除文件中所有的f
echo huanxiangwu | tr a-z A-Z 將huanxiangwu轉(zhuǎn)換成HUANXIANGWU
echo huanxiangwu | tr ‘[:lower:]‘ ‘[:upper:]‘ 將huanxiangwu轉(zhuǎn)換成HUANXIANGWU