linux tr

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ù)由 String1String2 變量指定的字符串以及指定的標(biāo)志摘悴,tr 命令可執(zhí)行三種操作峭梳。

轉(zhuǎn)換字符

如果 String1String2 兩者都已指定,但 -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 指定的字符串中的每個字符。
注:

  1. 當(dāng) -C 選項(xiàng)和 -d 選項(xiàng)一起指定時尔觉,將刪除所有除 String1 指定的那些字符以外的字符凉袱。忽略 String2 的內(nèi)容芥吟,除非也指定了 -s 選項(xiàng)侦铜。
  2. 當(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

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市估盘,隨后出現(xiàn)的幾起案子瓷患,更是在濱河造成了極大的恐慌,老刑警劉巖遣妥,帶你破解...
    沈念sama閱讀 206,968評論 6 482
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件擅编,死亡現(xiàn)場離奇詭異,居然都是意外死亡箫踩,警方通過查閱死者的電腦和手機(jī)爱态,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 88,601評論 2 382
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來境钟,“玉大人锦担,你說我怎么就攤上這事】鳎” “怎么了洞渔?”我有些...
    開封第一講書人閱讀 153,220評論 0 344
  • 文/不壞的土叔 我叫張陵,是天一觀的道長缚态。 經(jīng)常有香客問我磁椒,道長,這世上最難降的妖魔是什么玫芦? 我笑而不...
    開封第一講書人閱讀 55,416評論 1 279
  • 正文 為了忘掉前任浆熔,我火速辦了婚禮,結(jié)果婚禮上姨俩,老公的妹妹穿的比我還像新娘蘸拔。我一直安慰自己,他們只是感情好环葵,可當(dāng)我...
    茶點(diǎn)故事閱讀 64,425評論 5 374
  • 文/花漫 我一把揭開白布调窍。 她就那樣靜靜地躺著,像睡著了一般张遭。 火紅的嫁衣襯著肌膚如雪邓萨。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 49,144評論 1 285
  • 那天菊卷,我揣著相機(jī)與錄音缔恳,去河邊找鬼。 笑死洁闰,一個胖子當(dāng)著我的面吹牛歉甚,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播扑眉,決...
    沈念sama閱讀 38,432評論 3 401
  • 文/蒼蘭香墨 我猛地睜開眼纸泄,長吁一口氣:“原來是場噩夢啊……” “哼赖钞!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起聘裁,我...
    開封第一講書人閱讀 37,088評論 0 261
  • 序言:老撾萬榮一對情侶失蹤雪营,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后衡便,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體献起,經(jīng)...
    沈念sama閱讀 43,586評論 1 300
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 36,028評論 2 325
  • 正文 我和宋清朗相戀三年镣陕,在試婚紗的時候發(fā)現(xiàn)自己被綠了谴餐。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 38,137評論 1 334
  • 序言:一個原本活蹦亂跳的男人離奇死亡茁彭,死狀恐怖总寒,靈堂內(nèi)的尸體忽然破棺而出扶歪,到底是詐尸還是另有隱情理肺,我是刑警寧澤,帶...
    沈念sama閱讀 33,783評論 4 324
  • 正文 年R本政府宣布善镰,位于F島的核電站妹萨,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏炫欺。R本人自食惡果不足惜乎完,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,343評論 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望品洛。 院中可真熱鬧树姨,春花似錦、人聲如沸桥状。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,333評論 0 19
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽辅斟。三九已至转晰,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間士飒,已是汗流浹背查邢。 一陣腳步聲響...
    開封第一講書人閱讀 31,559評論 1 262
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留酵幕,地道東北人扰藕。 一個月前我還...
    沈念sama閱讀 45,595評論 2 355
  • 正文 我出身青樓,卻偏偏與公主長得像芳撒,于是被迫代替她去往敵國和親邓深。 傳聞我的和親對象是個殘疾皇子他嫡,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 42,901評論 2 345