0
  • 聊天消息
  • 系統(tǒng)消息
  • 評論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

如何使用Linux tr命令

CHANBAEK ? 來源:myfreax ? 作者:myfreax ? 2022-12-12 17:21 ? 次閱讀

tr是Linux和Unix系統(tǒng)中的命令行程序,可轉(zhuǎn)換,刪除和壓縮標(biāo)準(zhǔn)輸入的字符,并將結(jié)果寫入標(biāo)準(zhǔn)輸出。

tr命令通常通過管道與其他命令組合使用,并且可以執(zhí)行刪除重復(fù)字符,將大寫轉(zhuǎn)換為小寫以及基本字符替換和刪除的操作。

在本教程中,我們將通過實際示例和最常見選項的詳細(xì)說明向您展示如何使用tr命令。

tr 命令選項

tr命令的語法形式是tr OPTION... SET1 [SET2]。OPTION選項是必須的參數(shù),SET是字符集合,可以是一個多個字符集合。

tr命令默認(rèn)接受具有相同長度的兩組字符,并用第二組中字符集合替換第一組存在的字符集合。

例如命令echo 'myfreax' | tr 'myf' 'red'm替換為r,y替換為e,將f替換為d

echo 'myfreax' | tr 'myf' 'red'
redreax

也可以使用字符范圍來定義字符集,減少繁瑣的輸入,例如你要輸入lmno,可以使用l-n代替。

也就是說命令echo 'myfreax' | tr 'lmno' 'wxyz'echo 'myfreax' | tr 'l-n' 'w-z'是等價的。

echo 'myfreax' | tr 'lmno' 'wxyz'
echo 'myfreax' | tr 'l-n' 'w-z'

當(dāng)使用tr命令的-c/--complement選項時,tr命令將會替換第一組不存在的所有字符。

例如命令echo 'myfreax' | tr -c 'fa' 'xy'使用y替換字符串myfreax不是f或者a的字符。

您可能已經(jīng)注意到輸出比輸入多一個可見的字符。這是因為echo命令會打印一個不可見的換行符\\n。

tr命令也將\\n字符也替換為y。為了使echo命令不打印換行符,請使用echo命令的-n選項。

echo 'myfreax' | tr -c 'fa' 'xy'
echo -n 'myfreax' | tr -c  'fa' 'xy'
yyfyyayy

tr命令的-d/--delete選項刪除指定字符集合。例如命令echo 'myfreax' | tr -d 'ea'刪除字符串myfreaxea字符串。

在不壓縮字符的情況下刪除字符時,您只能指定一組。

echo 'myfreax' | tr -d 'ea'
myfrx

-s/--squeeze-repeats選項使用最后一個字符集合替換重復(fù)出現(xiàn)的字符。命令echo "GNU \\ Linux" | tr -s ' '刪除重復(fù)出現(xiàn)的空格字符。

在指定第二個字符集合時,首先使用第一個字符集合替換字符串GNU \\ Linux,然后使用第二個字符集合替換第一個字符集合。

echo "GNU     \\    Linux" | tr -s ' ' #GNU \\ Linux
echo "GNU     \\    Linux" | tr -s ' ' '_' #GNU_\\_Linux

tr 命令轉(zhuǎn)換小寫大寫

將小寫轉(zhuǎn)換為大寫或者大寫轉(zhuǎn)小寫。是tr命令的典型用例之一。在指定字符集合時可以使用[:lower:]匹配小寫字符,[:upper:]匹配大寫字符。

除了字符類,您還可以使用范圍,例如'a-z'匹配小寫字符串,'A-Z'匹配大寫字符。要將大寫轉(zhuǎn)換為小寫,只需切換字符集合的位置即可。

命令echo 'myfreax' | tr 'a-z' 'A-Z'轉(zhuǎn)換為大寫,echo 'myfreax' | tr 'A-Z' 'a-z'轉(zhuǎn)換為小寫。

echo 'myfreax' | tr '[:lower:]' '[:upper:]' #MYFREAX
echo 'myfreax' | tr 'a-z' 'A-Z' #MYFREAX

tr 命令刪除數(shù)字

[:digit:]代表所有數(shù)字字符,要刪除數(shù)字,可以組合使用tr命令的-cd選項刪除所有非數(shù)字字符。

tr命令的-c選項表示替換第一組不存在的所有字符。-s選項表示刪除字符一組字符集合存在的字符。

tr -cd [:digit:]組合起來就是刪除第一組字符集合不是數(shù)字的字符,如果你要刪除不是數(shù)字的字符,使用[:alpha:]替換[:digit:]。

echo "my phone is 123-456-7890" | tr -cd [:digit:]
1234567890

tr 命令在單詞末尾插入換行符

[:alnum:]代表所有數(shù)字和字符A-Za-z,要在單詞末尾插入換行符,可以組合使用tr命令的-cs選項刪除所有非數(shù)字字符。

tr命令的-c選項表示替換第一組不存在的所有字符。-s選項表示使用最后一個字符集合替換重復(fù)出現(xiàn)的字符。-c '[:alnum:]'表示搜索所有空白字符。

tr -cs '[:alnum:]' '\\n'組合起來就是搜索所有空白字符串替換為換行符\\n

echo 'GNU is an operating system' | tr -cs '[:alnum:]' '\\n'
GNU
is
an
operating
system

tr 命令刪除空行

由于tr命令僅接受標(biāo)準(zhǔn)輸入,因此必須使用標(biāo)準(zhǔn)輸入重定向符號<,將標(biāo)準(zhǔn)輸入的鍵盤替換為文件。

tr命令的-s選項表示使用最后一個字符集合替換重復(fù)出現(xiàn)的字符。換行符號在單行中會被以為是重復(fù)字符串。

tr -s '\\n'組合就是替換重復(fù)的換行符,由于命令沒有指定第二個字符集合,因此沒有字符替換。

最后> new_file.txt就是將tr命令的標(biāo)準(zhǔn)輸出重定向到文件new_file.txt

tr -s '\\n' < file.txt > new_file.txt

tr 命令打印$PATH目錄

$PATH環(huán)境變量是用冒號分隔的目錄列表,指示Shell程序在用戶運行命令時要搜索可執(zhí)行文件的目錄。

如要在每一行打印每個$PATH環(huán)境變量的目錄,只需要將冒號:替換為換行符號即可。

echo $PATH | tr  ':' '\\n'
/usr/local/sbin
/usr/local/bin
/usr/sbin
/usr/bin
/sbin
/bin

結(jié)論

現(xiàn)在,您應(yīng)該對如何使用Linux tr命令有很好的了解。tr只能使用單個字符。對于復(fù)雜的模式匹配和字符串處理應(yīng)該使用sed或awk。

聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問題,請聯(lián)系本站處理。 舉報投訴
  • UNIX
    +關(guān)注

    關(guān)注

    0

    文章

    296

    瀏覽量

    41491
  • 命令
    +關(guān)注

    關(guān)注

    5

    文章

    684

    瀏覽量

    22027
  • lunix
    +關(guān)注

    關(guān)注

    0

    文章

    3

    瀏覽量

    1038
收藏 人收藏

    評論

    相關(guān)推薦

    詳解Linux上兩個超有用重要的文本操作命令

    Linux 通過大量的命令使得文本操作和處理非常容易。像 tr 和 fmt 這樣的命令行工具可以幫助您從終端更改、格式化和修改文本文件。
    發(fā)表于 11-11 09:14 ?538次閱讀

    Linux文件內(nèi)容查詢命令

    Linux文件內(nèi)容查詢命令 Linux文件內(nèi)容查詢命令  grep、fgrep和egrep命令  這組
    發(fā)表于 01-18 12:45 ?846次閱讀

    Linux目錄的創(chuàng)建與刪除命令

    Linux目錄的創(chuàng)建與刪除命令 Linux目錄的創(chuàng)建與刪除命令  mkdir命令  功能:創(chuàng)建一個目錄(類似DOS下的md
    發(fā)表于 01-18 12:46 ?1319次閱讀

    Linux與用戶有關(guān)的命令

    Linux與用戶有關(guān)的命令 Linux與用戶有關(guān)的命令  passwd命令  出于系統(tǒng)安全考慮,Lin
    發(fā)表于 01-18 12:46 ?770次閱讀

    Linux的常用網(wǎng)絡(luò)命令

    Linux的常用網(wǎng)絡(luò)命令 Linux 的常用網(wǎng)絡(luò)命令  計算機(jī)網(wǎng)絡(luò)的主要優(yōu)點是能夠?qū)崿F(xiàn)資源和信息的共享,并且用戶可以遠(yuǎn)程訪問信息。Linux
    發(fā)表于 01-18 12:47 ?1182次閱讀

    Linux關(guān)機(jī)命令詳解

    Linux關(guān)機(jī)命令詳解 在linux下一些常用的關(guān)機(jī)/重啟命令有shutdown、halt、reboot、及init,它們都 可以達(dá)到重啟系統(tǒng)的目的,但每個
    發(fā)表于 01-18 12:52 ?3631次閱讀

    Linux系統(tǒng)命令指南

    在“Linux 文件命令精通指南”中,我們討論了利用最基礎(chǔ)和最常用 Linux 文件命令所需的基本信息。在本文中,我將對 Linux 系統(tǒng)
    發(fā)表于 05-23 10:23 ?963次閱讀

    linux命令大全

    書中收集了豐富的Linux命令,是Linux技術(shù)開發(fā)者的好工具
    發(fā)表于 08-08 18:20 ?3次下載

    Linux命令大全

    Linux命令大全
    發(fā)表于 10-30 09:49 ?9次下載
    <b class='flag-5'>Linux</b>的<b class='flag-5'>命令</b>大全

    linux有哪些常用的命令

     Linux命令非常之多,分為內(nèi)部命令和外部命令
    發(fā)表于 02-27 08:00 ?4次下載
    <b class='flag-5'>linux</b>有哪些常用的<b class='flag-5'>命令</b>

    常用Linux命令介紹

    linux命令是對Linux系統(tǒng)進(jìn)行管理的命令。對于Linux系統(tǒng)來說,無論是中央處理器、內(nèi)存、磁盤驅(qū)動器、鍵盤、鼠標(biāo),還是用戶等都是文件,
    的頭像 發(fā)表于 02-09 14:31 ?1064次閱讀

    淺析Linux精致的命令

    這只是一小部分常用的Linux命令,Linux有很多命令可以使用。建議通過man命令來查看命令
    的頭像 發(fā)表于 04-24 16:28 ?1555次閱讀

    shell命令linux命令一樣嗎

    Shell命令Linux命令并不完全一樣。 首先,Shell是一種命令行解釋器,它是用來解釋和執(zhí)行用戶輸入的命令的。Shell既是一種
    的頭像 發(fā)表于 11-08 10:51 ?2876次閱讀

    linux重啟命令有哪些

    Linux是一種自由和開放源代碼的操作系統(tǒng),被廣泛應(yīng)用于服務(wù)器和嵌入式設(shè)備。在Linux中,有多種命令用于重啟系統(tǒng)。在本文中,我們將詳細(xì)介紹常用的Linux重啟
    的頭像 發(fā)表于 11-17 09:49 ?2046次閱讀

    Linux實用命令大全

    Linux實用命令大全
    的頭像 發(fā)表于 10-23 13:50 ?231次閱讀
    <b class='flag-5'>Linux</b>實用<b class='flag-5'>命令</b>大全