Linux中的tr命令的詳細解釋
Linux中的tr命令的詳細解釋
Linux下的tr命令是一個專門用來處理字符的命令,下面由學(xué)習(xí)啦小編為大家整理了linux下的tr命令的詳細解釋,希望對大家有幫助!
Linux中的tr命令的詳細解釋
Linux中的tr命令用于轉(zhuǎn)換或刪除文件中的字符。
tr 指令從標(biāo)準輸入設(shè)備讀取數(shù)據(jù),經(jīng)過字符串轉(zhuǎn)譯后,將結(jié)果輸出到標(biāo)準輸出設(shè)備。
語法
tr [-cdst][--help][--version][第一字符集][第二字符集]
tr [OPTION]…SET1[SET2]
參數(shù)說明:
-c, --complement:反選設(shè)定字符。也就是符合 SET1 的部份不做處理,不符合的剩余部份才進行轉(zhuǎn)換
-d, --delete:刪除指令字符
-s, --squeeze-repeats:縮減連續(xù)重復(fù)的字符成指定的單個字符
-t, --truncate-set1:削減 SET1 指定范圍,使之與 SET2 設(shè)定長度相等
--help:顯示程序用法信息
--version:顯示程序本身的版本信息
字符集合的范圍:
\NNN 八進制值的字符 NNN (1 to 3 為八進制值的字符)
\ 反斜杠
\a Ctrl-G 鈴聲
\b Ctrl-H 退格符
\f Ctrl-L 走行換頁
\n Ctrl-J 新行
\r Ctrl-M 回車
\t Ctrl-I tab鍵
\v Ctrl-X 水平制表符
CHAR1-CHAR2 :字符范圍從 CHAR1 到 CHAR2 的指定,范圍的指定以 ASCII 碼的次序為基礎(chǔ),只能由小到大,不能由大到小。
[CHAR*] :這是 SET2 專用的設(shè)定,功能是重復(fù)指定的字符到與 SET1 相同長度為止
[CHAR*REPEAT] :這也是 SET2 專用的設(shè)定,功能是重復(fù)指定的字符到設(shè)定的 REPEAT 次數(shù)為止(REPEAT 的數(shù)字采 8 進位制計算,以 0 為開始)
[:alnum:] :所有字母字符與數(shù)字
[:alpha:] :所有字母字符
[:blank:] :所有水平空格
[:cntrl:] :所有控制字符
[:digit:] :所有數(shù)字
[:graph:] :所有可打印的字符(不包含空格符)
[:lower:] :所有小寫字母
[:print:] :所有可打印的字符(包含空格符)
[:punct:] :所有標(biāo)點字符
[:space:] :所有水平與垂直空格符
[:upper:] :所有大寫字母
[:xdigit:] :所有 16 進位制的數(shù)字
[=CHAR=] :所有符合指定的字符(等號里的 CHAR,代表你可自訂的字符)
linux的tr命令的具體例子
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
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、用空格符0替換制表符 class="main">
Linux中的tr命令的詳細解釋
Linux中的tr命令的詳細解釋
10、把路徑變量中的冒號":",替換成換行符"\n"
# echo $PATH | tr -s ":" "\n"
補充:linux的tr命令關(guān)于表達字符串的特殊序列
表達字符串的特殊序列
String1 和 String2 變量中所包含的字符串可以使用以下的約定來表示:
C1-C2
指定了 C1 所指定的字符和 C2 所指定的字符之間(包括 C1 和 C2)進行整理的字符串。C1 所指定的字符必須整理放在由 C2 所指定的字符之前。
注:在使用本方法指定子范圍時,當(dāng)前語言環(huán)境對結(jié)果有重要影響。如果需要用命令來產(chǎn)生與語言環(huán)境無關(guān)的一致結(jié)果,那么應(yīng)該避免使用子范圍。
[C*Number]
Number 是一個整數(shù),它指定了由 C 所指定的字符的重復(fù)次數(shù)。除非其首位數(shù)字是 0,否則 Number 一律視為是十進制整數(shù);如果首位數(shù)字是 0,那么視為八進制整數(shù)。
[C*]
用 C 指定的字符填寫字符串。該選項只用于包含在 String2 中的字符串末尾,它強制 String2 中的字符串具有與由 String1 變量所指定的字符串一樣的字符數(shù)。*(星號)后面指定的任何字符都被忽略。
[ :ClassName: ]
alnum lower
alpha print
blank punct
cntrl space
digit upper
graph xdigit
除 [:lower:] 和 [:upper:] 轉(zhuǎn)換字符類之外,其他字符類指定的字符都按未指定的順序放入數(shù)組中。由于未定義字符類指定的字符的順序,僅當(dāng)目的為將多個字符映射為一個時才使用這些字符。轉(zhuǎn)換字符類除外。
有關(guān)字符類的詳細情況,請參閱 ctype 子例程。
[ =C= ]
指定所有的字符具有與 C 所指定的字符相同的等價類。
\Octal
指定字符,其編碼由 Octal 所指定的八進制值表示。Octal 可以是 1 位、2 位 或 3 位八進制整數(shù)??兆址梢杂?'
Linux中的tr命令的詳細解釋
Linux中的tr命令的詳細解釋
Linux下的tr命令是一個專門用來處理字符的命令,下面由學(xué)習(xí)啦小編為大家整理了linux下的tr命令的詳細解釋,希望對大家有幫助!
Linux中的tr命令的詳細解釋
Linux中的tr命令用于轉(zhuǎn)換或刪除文件中的字符。
tr 指令從標(biāo)準輸入設(shè)備讀取數(shù)據(jù),經(jīng)過字符串轉(zhuǎn)譯后,將結(jié)果輸出到標(biāo)準輸出設(shè)備。
語法
tr [-cdst][--help][--version][第一字符集][第二字符集]
tr [OPTION]…SET1[SET2]
參數(shù)說明:
-c, --complement:反選設(shè)定字符。也就是符合 SET1 的部份不做處理,不符合的剩余部份才進行轉(zhuǎn)換
-d, --delete:刪除指令字符
-s, --squeeze-repeats:縮減連續(xù)重復(fù)的字符成指定的單個字符
-t, --truncate-set1:削減 SET1 指定范圍,使之與 SET2 設(shè)定長度相等
--help:顯示程序用法信息
--version:顯示程序本身的版本信息
字符集合的范圍:
\NNN 八進制值的字符 NNN (1 to 3 為八進制值的字符)
\ 反斜杠
\a Ctrl-G 鈴聲
\b Ctrl-H 退格符
\f Ctrl-L 走行換頁
\n Ctrl-J 新行
\r Ctrl-M 回車
\t Ctrl-I tab鍵
\v Ctrl-X 水平制表符
CHAR1-CHAR2 :字符范圍從 CHAR1 到 CHAR2 的指定,范圍的指定以 ASCII 碼的次序為基礎(chǔ),只能由小到大,不能由大到小。
[CHAR*] :這是 SET2 專用的設(shè)定,功能是重復(fù)指定的字符到與 SET1 相同長度為止
[CHAR*REPEAT] :這也是 SET2 專用的設(shè)定,功能是重復(fù)指定的字符到設(shè)定的 REPEAT 次數(shù)為止(REPEAT 的數(shù)字采 8 進位制計算,以 0 為開始)
[:alnum:] :所有字母字符與數(shù)字
[:alpha:] :所有字母字符
[:blank:] :所有水平空格
[:cntrl:] :所有控制字符
[:digit:] :所有數(shù)字
[:graph:] :所有可打印的字符(不包含空格符)
[:lower:] :所有小寫字母
[:print:] :所有可打印的字符(包含空格符)
[:punct:] :所有標(biāo)點字符
[:space:] :所有水平與垂直空格符
[:upper:] :所有大寫字母
[:xdigit:] :所有 16 進位制的數(shù)字
[=CHAR=] :所有符合指定的字符(等號里的 CHAR,代表你可自訂的字符)
linux的tr命令的具體例子
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
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、用空格符0替換制表符 class="main">
' 表示,并可以像任何其他的字符那樣進行處理。\ControlCharacter
指定與 ControlCharacter 所指定的值相應(yīng)的控制字符??梢员硎疽韵轮担?/p>
\a 警告
\b 退格鍵
\f 換頁
\n 換行
\r 回車
\t 制表鍵
\v 垂直制表鍵
\
規(guī)定 "\"(反斜杠)就是作反斜杠使用,而無作為轉(zhuǎn)義字符的任何特殊意義。
\[
指定“[”(左括號)就作為左括號使用,而無作為特定字符串序列的開始字符的任何特殊意義。
\-
指定“-”(負號)就作為負號使用,而無作為范圍分隔符的任何特殊意義。
如果某個字符在 String1 中被指定過多次,那么該字符就被轉(zhuǎn)換成 String2 中為與 String1 中最后出現(xiàn)的字符相對應(yīng)的字符。
如果由 String1 和 String2 指定的字符串長度不相同,那么 tr 命令就會忽略較長一個字符串中的多余字符。