1. 前言
linux中的tr命令用于執(zhí)行一組字符到另一組字符的簡單但非常有用的轉(zhuǎn)換。學習tr命令的一些實際示例。
tr命令中的tr代表翻譯。這個實用的命令用于將一種類型的字符轉(zhuǎn)換成另一種類型的字符。例如,如果希望將文本轉(zhuǎn)換為所有大寫或所有小寫,可以使用tr命令。
tr命令對于簡單快速的轉(zhuǎn)換來說已經(jīng)足夠好了,但是它的能力還比不上awk或sed命令。
Linux中的tr命令的常見使用示例
2. Linux中`tr`命令的實際示例
tr命令有以下語法:
tr [options] charset1 [charset2]
以下這些是tr命令的有用選項:
- -d刪除第一個集合中的字符
- -c補充第一組字符,例如:只對第一組以外的字符進行操作
- -s刪除第一個集合中多個相鄰的字符
- -t截斷第一個集合
讓我們看看如何在各種場合中使用tr命令及其選項。
2.1 將小寫字母轉(zhuǎn)換為大寫字母,反之亦然
tr命令最流行的用法之一是轉(zhuǎn)換大小寫。讓我們首先使用cat命令來顯示示例文件中的文本。
cat sample.txt
Linux系統(tǒng)將小寫字母轉(zhuǎn)換為大寫字母
This is my life and my file
現(xiàn)在,如果你想把文本轉(zhuǎn)換成所有的大寫字母,你需要做的是:
cat sample.txt | tr 'a-z' 'A-Z'
下面是命令執(zhí)行后的輸出結(jié)果:
cat sample.txt | tr ‘a-z’ ‘A-Z’
THIS IS MY LIFE
AND MY FILE
你也可以在這里使用字符類:
cat sample.txt | tr [:lower:] [:upper:]
THIS IS MY LIFE
AND MY FILE
即把小寫字母變成大寫字母
Linux系統(tǒng)把小寫字母變成大寫字母
要將文本轉(zhuǎn)換成所有的小寫字母,你只需要交換字符集:
cat sample.txt | tr 'A-Z' 'a-z'
2.2 用一組字符替換另一組字符
Linux用一組字符替換另一組字符
在上面的示例中,您將小寫字母轉(zhuǎn)換為大寫字母。同樣,您可以將一組字符替換為另一組字符。匹配是在一個接一個的基礎(chǔ)上完成的。
讓我用這個例子來解釋:
cat sample.txt | tr ‘ilm’ ‘tyz’
Thts ts zy ytfe
and zy ftye
轉(zhuǎn)換結(jié)果如下:i>tm>zl>y
如果第二個集合比第一個集合小,則重復(fù)第二個集合的最后一個字符。換句話說,如果你用了tr ' ilm ' ' ty ',那么' l '和' m '就會被' y '取代。
此方法的一個實際示例是將()替換為{}或?qū)⑾聞澗€(_)替換為破折號(-)之類的東西。您還可以在Linux中以相同的方式將制表符(tabs)轉(zhuǎn)換為空格。
2.3 刪除特定的字符
如果你想刪除一個或多個字符,你可以使用tr命令的-d選項:
cat sample.txt | tr -d ‘is’
Th my lfe
and my fle
在上面的例子中,' i '和' s '的所有實例都被刪除了。如果你以為只有“is”會被刪除,那么你錯了。這就是為什么本文開始時提到,sed命令是一個更好的選擇。
2.4 刪除重復(fù)字符,如多個空格
假設(shè)您的文本有多個空格,并且希望用單個空格替換多個空格。
原文件內(nèi)容如下 :
echo “Text has too many spaces” | tr -s ” “
Text has too many spaces
您還可以將一個字符的多次出現(xiàn)替換為另一個字符。例如,可以用分號(;)替換所有出現(xiàn)的空格。
echo “Text has too many spaces” | tr -s ” ” “;”
輸出結(jié)果:
Text;has;too;many;spaces
2.5 刪除所有非數(shù)字字符
假設(shè)您有文本,其中包含字母和數(shù)字,您希望只保留數(shù)字。您可以使用complementary選項-c并將其與delete選項-d組合使用。
把"Phone number is 123456789"中的非數(shù)字內(nèi)容全部刪除
echo “Phone number is 123456789” | tr -cd [:digit:]
123456789
2.6 截斷搜索語法
選項-t在截斷搜索模式時很有用。假設(shè)第一組字符比第二組字符大。在這種情況下,第二個集合中的最后一個字符將替換第一個集合中的所有剩余字符。
讓我用這個例子來解釋一下:
cat sample.txt | tr ‘isef’ ’12’
Th12 12 my l122
and my 21l2
在上面的例子中,“i”被替換為1,所有的s、e和f都被替換為2。如果使用truncate選項-t,它將截斷' is '處的第一組字符,其余e和f將保持不變:
cat sample.txt | tr -t ‘isef’ ’12’
Th12 12 my l1fe
and my f1le
即ef的替換不起作用了。
3. 總結(jié)
在Unix/Linux中還有許多其他的tr命令示例。本教程將解釋一些使用tr命令的各種選項的示例。你可以運用你的想象力,把它們運用到各種各樣的情況中去。
我希望本教程對您有所幫助。如果您有更好的案例,歡迎留言。
本文已同步至博客站,尊重原創(chuàng),轉(zhuǎn)載時請在正文中附帶以下鏈接:https://www.linuxrumen.com/cyml/1679.html
點擊了解更多,快速查看更多的技術(shù)文章列表。