linux tr命令詳解

2021-06-29 00:44:09 字數 3914 閱讀 5931

轉換字元。

tr [ -c | -cds | -cs | -c | -cds | -cs | -ds | -s ] [ -a ] string1

string2

tr [ -a ] string1

tr 命令從標準輸入刪除或替換字元,並將結果寫入標準輸出。根據由 string1 和 string2 變數指定的字串以及指定的標誌,tr 命令可執行三種操作。

轉換字元

如果 string1 和 string2 兩者都已指定,但 -d 標誌沒有指定,那麼 tr 命令就會從標準輸入中將 string1 中所包含的每乙個字元都替換成 string2 中相同位置上的字元。

使用 -d 標誌刪除字元

如果 -d 標誌已經指定,那麼 tr 命令就會從標準輸入中刪除 string1 中包含的每乙個字元。

用 -s 標誌除去序列

如果 -s 標誌已經指定,那麼 tr 命令就會除去包含在 string1 或 string2 中的任何字串系列中的除第乙個字元以外的所有字元。對於包含在 string1 中的每乙個字元,tr 命令會從標準輸出中除去除第乙個出現的字元以外的所有字元。對於包含在 string2 中的每乙個字元,tr 命令除去標準輸出的字串行中除第乙個出現的字元以外的所有字元。

表達字串的特殊序列

string1 和 string2 變數中所包含的字串可以使用以下的約定來表示:

c1-c2

指定了 c1 所指定的字元和 c2 所指定的字元之間(包括 c1 和 c2)進行整理的字串。c1 所指定的字元必須整理放在由 c2 所指定的字元之前。

注:在使用本方法指定子範圍時,當前語言環境對結果有重要影響。如果需要用命令來產生與語言環境無關的一致結果,那麼應該避免使用子範圍。

[c*number]

number 是乙個整數,它指定了由 c 所指定的字元的重複次數。除非其首位數字是 0,否則 number 一律視為是十進位制整數;如果首位數字是 0,那麼視為八進位制整數。

[c*]

用 c 指定的字元填寫字串。該選項只用於包含在 string2 中的字串末尾,它強制 string2 中的字串具有與由 string1 變數所指定的字串一樣的字元數。*(星號)後面指定的任何字元都被忽略。

[ :classname: ]

指定由當前語言環境中的 classname 所命名的字元類中的所有字元。類名可以是下述名稱中的任何一種:

alnum      lower

alpha print

blank punct

cntrl space

digit upper

graph xdigit

除 [:lower:] 和 [:upper:] 轉換字元類之外,其他字元類指定的字元都按未指定的順序放入陣列中。由於未定義字元類指定的字元的順序,僅當目的為將多個字元對映為乙個時才使用這些字元。轉換字元類除外。

有關字元類的詳細情況,請參閱 ctype 子例程。

[ =c= ]

指定所有的字元具有與 c 所指定的字元相同的等價類。

\octal

指定字元,其編碼由 octal 所指定的八進位制值表示。octal 可以是 1 位、2 位 或 3 位八進位制整數。空字元可以用 '\0' 表示,並可以像任何其他的字元那樣進行處理。

\controlcharacter

指定與 controlcharacter 所指定的值相應的控制字元。可以表示以下值:

\a警告

\b退格鍵

\f換頁

\n換行

\r回車

\t製表鍵

\v垂直製表鍵

\\規定 "\"(反斜槓)就是作反斜槓使用,而無作為轉義字元的任何特殊意義。

\[指定「[」(左括號)就作為左括號使用,而無作為特定字串序列的開始字元的任何特殊意義。

\-指定「-」(負號)就作為負號使用,而無作為範圍分隔符的任何特殊意義。

如果某個字元在 string1 中被指定過多次,那麼該字元就被轉換成 string2 中為與 string1 中最後出現的字元相對應的字元。

如果由 string1 和 string2 指定的字串長度不相同,那麼 tr 命令就會忽略較長乙個字串中的多餘字元。

-a使用範圍和字元類 ascii 整理順序、乙個位元組乙個位元組地執行所有操作,而不是使用當前語言環境整理順序。

-c指定 string1 值用 string1 所指定的字串的補碼替換。string1 的補碼是當前語言環境的字符集中的所有字元,除了由 string1 指定的字元以外。如果指定了 -a 和 -c 標誌都已指定,那麼與所有 8 位字元**集合有關的字元將被補足。如果指定了 -c 和 -s 標誌,那麼 -s 標誌適用於string1 的補碼中的字元。 如果沒有指定 -d 選項,那麼由 string1 指定的字元的補碼將放置到公升序排列的陣列中(如 lc_collate 的當前設定所定義)。

-c指定 string1 值用 string1 所指定的字串的補碼替換。string1 的補碼是當前語言環境的字符集中的所有字元,除了由 string1 指定的字元以外。如果指定了 -a 和 -c 標誌都已指定,那麼與所有 8 位字元**集合有關的字元將被補足。如果指定了 -c 和 -s 標誌,那麼 -s 標誌適用於string1 的補碼中的字元。 如果沒有指定 -d 選項,那麼由 string1 指定的值的補碼將放置到通過二進位制值公升序排列的陣列中。

-d從標準輸入刪除包含在由 string1 指定的字串中的每個字元。

注:當 -c 選項和 -d 選項一起指定時,將刪除所有除 string1 指定的那些字元以外的字元。忽略 string2 的內容,除非也指定了 -s 選項。

當 -c 選項和 -d 選項一起指定時,將刪除所有除 string1 指定的那些字元以外的字元。忽略 string2 的內容,除非也指定了 -s 選項。 -s

在重複字串行中除去除第乙個字元以外的所有字元。將 string1 所指定的字串行在轉換之前從標準輸入中除去,並將 string2 所指定的字串行從標準輸出中除去。

string1

指定乙個字串。

string2

指定乙個字串。

該命令返回以下退出值:

所有輸入處理成功。

>0

發生錯誤。

若要將大括號轉換為小括號,請輸入:

tr '{}' '()' < textfile > newfile
這便將每個 (右大括號)轉換成 )(右小括號)。所有其他的字元都保持不變。

若要將大括號轉換成方括號,請輸入:

tr '{}' '\' < textfile > newfile
這便將每個 (右大括號)轉換成 ](右方括號)。左方括號必須與乙個 "\"(反斜扛)轉義字元一起輸入。

若要將小寫字元轉換成大寫,請輸入:

tr 'a-z' 'a-z' < textfile > newfile
若要建立乙個檔案中的單詞列表,請輸入:
tr -cs '[:lower:][:upper:]' '[\n*]' < textfile > newfile
這便將每一串行的字元(小、大寫字母除外)都轉換成單個換行符。*(星號)可以使 tr 命令重複換行符足夠多次以使第二個字串與第乙個字串一樣長。

若要從某個檔案中刪除所有空字元,請輸入:

tr -d '\0' < textfile > newfile
若要用單獨的換行替換每一串行的乙個或多個換行,請輸入:
tr -s '\n' < textfile > newfile

tr -s '\012' < textfile > newfile
若要以「?」(問號)替換每個非顯示字元(有效控制字元除外),請輸入:
tr -c '[:print:][:cntrl:]' '[?*]' < textfile > newfile
這便對不同語言環境中建立的檔案進行掃瞄,以查詢當前語言環境下不能顯示的字元。

要以單個「#」字元替換 字元類中的每個字串行,請輸入:

tr -s '[:space:]' '[#*]'

linux tr 命令詳解

1 關於tr 通過使用 tr,您可以非常容易地實現 sed 的許多最基本功能。您可以將 tr 看作為 sed 的 極其 簡化的變體 它可以用乙個字元來替換另乙個字元,或者可以完全除去一些字元。您也可以用它來除去重複字元。這就是所有 tr 所能夠做的。tr用來從標準輸入中通過替換或刪除操作進行字元轉換...

linux tr命令詳解

通過使用 tr,您可以非常容易地實現 sed 的許多最基本功能。您可以將 tr 看作為 sed 的 極其 簡化的變體 它可以用乙個字元來替換另乙個字元,或者可以完全除去一些字元。您也可以用它來除去重複字元。這就是所有 tr 所能夠做的。tr 用來從標準輸入中通過替換或刪除操作進行字元轉換。tr主要用...

linux tr命令詳解

通過使用 tr,您可以非常容易地實現 sed 的許多最基本功能。您可以將 tr 看作為 sed 的 極其 簡化的變體 它可以用乙個字元來替換另乙個字元,或者可以完全除去一些字元。您也可以用它來除去重複字元。這就是所有 tr 所能夠做的。tr用來從標準輸入中通過替換或刪除操作進行字元轉換。tr主要用於...