linux tr命令用法


tr(translate),一個很好用的字符映射命令,有以下幾個優點,可以用來輔助cat ,grep,vi等命令:

(1)自定義字符集合進行字符映射

(2)處理一些特殊字符,例如'\t','\n'等

(3)刪除字符或者字符集合

(4)進行字符壓縮

(1)字符映射

[root@hexel ~]#echo abcdEFG | tr 'a-z' 'A-Z' --這里使用了字母集合,把小寫字母替換成大寫字母

ABCDEFG

注意,如果后面字符集合比前面字符集合小,結果是映射后的最后一個字符重復,以補足,例如:

[root@hexel ~]#echo abcdefgHIG | tr 'a-z' 'A-C' --后面一個字符集小    

ABCCCCCHIG

字符集合可以自定義,例如:

[root@hexel ~]#echo lnpnEFG | tr 'a-z' '0-3'

3333EFG

[root@hexel ~]#echo lnpn123EFG | tr 'a-z0-9' 'a-z1'

lnpn111EFG

(2)替換字符

例如:

[root@hexel ~/shell/tr]#cat tr.sh 

123     edf

1234    abc

現在要把制表符替換成逗號,這在處理csv文件時非常有用,比vi批量替換高效不少:

[root@hexel ~/shell/tr]#cat tr.sh | tr '\t' ','

123,edf

1234,abc

(3)刪除字符(支持字符集合刪除):

[root@hexel ~/shell/tr]#echo 'hello 123' | tr -d '0-9'  --刪除數字

hello

相反,有時候可能要保留一類字符而刪除其他所有字符,這時候可以使用-c選項指定例外字符集,例如:

[root@hexel ~/shell/tr]#echo 'hello!@#123' | tr -d -c '\n0-9' 

123

(4)壓縮字符

cat可以用-s選項壓縮多行連續的空白行為一行,但是無法刪除空白行,使用tr可以辦到(原理是把連續的\n字符壓縮為一個),例如:

[root@hexel ~/shell/tr]#cat tr1.sh 

1

 

 

2

 

 

3

[root@hexel ~/shell/tr]#cat -s tr1.sh 

1

 

2

 

3

[root@hexel ~/shell/tr]#cat  tr1.sh  | tr -s '\n'

1

2

3

這種寫法比grep -v后接正則表達式(^$)簡單很多了。

可以對上面的結果進行求和,與循環相加相比,代碼量少了很多:

[root@hexel ~/shell/tr]#cat  tr1.sh  | tr -s '\n' | echo $[ $(tr '\n' '+') 0  ]   

6

這利用了算數運算方法:

[root@hexel ~/shell/tr]#echo $[ 1+2+3+0 ]                      

6


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM