tr用来转换或者删除一段文字。
1、实现大小写转换
root@DESKTOP-1N42TVH:/home/test# ls a.txt root@DESKTOP-1N42TVH:/home/test# cat a.txt ## 测试数据 i A E F d q J M S e N f root@DESKTOP-1N42TVH:/home/test# cat a.txt | tr [A-Z] [a-z] ##全部转换为小写 i a e f d q j m s e n f root@DESKTOP-1N42TVH:/home/test# cat a.txt i A E F d q J M S e N f root@DESKTOP-1N42TVH:/home/test# cat a.txt | tr [a-z] [A-Z] ## 全部转换为大小 I A E F D Q J M S E N F root@DESKTOP-1N42TVH:/home/test# cat a.txt i A E F d q J M S e N f root@DESKTOP-1N42TVH:/home/test# cat a.txt | tr [AF] [af] ##转换指定字符 i a E f d q J M S e N f
2、行与列数据的转换
a、行转列
root@DESKTOP-1N42TVH:/home/test# ls a.txt root@DESKTOP-1N42TVH:/home/test# cat a.txt i A E F d q J M S e N f root@DESKTOP-1N42TVH:/home/test# cat a.txt | tr " " "\n" ## 行转列,将空格替换为换行符 i A E F d q J M S e N f
b、列转行
root@DESKTOP-1N42TVH:/home/test# ls a.txt root@DESKTOP-1N42TVH:/home/test# cat a.txt ## 测试数据 i A E F d q J M S e N f root@DESKTOP-1N42TVH:/home/test# cat a.txt | tr "\n" " " ## 末尾多出空格,但是没有换行符 i A E F d q J M S e N f root@DESKTOP-1N42TVH:/home/test# root@DESKTOP-1N42TVH:/home/test# cat a.txt i A E F d q J M S e N f root@DESKTOP-1N42TVH:/home/test# cat a.txt | tr "\n" " " | sed 's/.$/\n/' ## 利用sed将末尾的空格转换为换行符 i A E F d q J M S e N f root@DESKTOP-1N42TVH:/home/test# cat a.txt | tr "\n" " " | sed 's/.$/\n/' | cat -A i A E F d q J M S e N f$
3、-d 删除指定字符
root@DESKTOP-1N42TVH:/home/test# ls a.txt root@DESKTOP-1N42TVH:/home/test# cat a.txt i A E F d q d M d e N f root@DESKTOP-1N42TVH:/home/test# cat a.txt | tr -d "E" ## 删除字符E i A F d q d M d e N f root@DESKTOP-1N42TVH:/home/test# cat a.txt i A E F d q d M d e N f root@DESKTOP-1N42TVH:/home/test# cat a.txt | tr -d "d" ##删除字符d i A E F q M e N f root@DESKTOP-1N42TVH:/home/test# cat a.txt | tr -d [dE] ##同时删除字符d和E i A F q M e N f
4、利用tr删除空行
root@DESKTOP-1N42TVH:/home/test# ls a.txt root@DESKTOP-1N42TVH:/home/test# cat a.txt i A E F d q d M d e N f root@DESKTOP-1N42TVH:/home/test# cat -A a.txt i A E F$ $ d q d M$ $ $ d e N f$ root@DESKTOP-1N42TVH:/home/test# cat a.txt | tr -s "\n" ##将多个换行符\n压缩为一个\n i A E F d q d M d e N f
5、-s 将多个连续的字符压缩为一个字符
root@DESKTOP-1N42TVH:/home/test# ls a.txt root@DESKTOP-1N42TVH:/home/test# cat a.txt i A E F d q ddd M d eee N fff root@DESKTOP-1N42TVH:/home/test# cat -A a.txt i A E F$ d q ddd M$ d eee N fff$ root@DESKTOP-1N42TVH:/home/test# cat a.txt | tr -s "d" ## 将多个连续的d压缩为一个d i A E F d q d M d eee N fff root@DESKTOP-1N42TVH:/home/test# cat -A a.txt i A E F$ d q ddd M$ d eee N fff$ root@DESKTOP-1N42TVH:/home/test# cat a.txt | tr -s "def" ##将多个连续的d、e、f压缩维唯一
i A E F d q d M d e N f
压缩多个连续的空格或者制表符:
root@DESKTOP-1N42TVH:/home/test# ls a.txt root@DESKTOP-1N42TVH:/home/test# cat a.txt i A E F d q d M d e N f root@DESKTOP-1N42TVH:/home/test# cat -A a.txt i A E F$ d q d M$ d e^I^I^IN f$ root@DESKTOP-1N42TVH:/home/test# sed -n l a.txt i A E F$ d q d M$ d e\t\t\tN f$ root@DESKTOP-1N42TVH:/home/test# cat a.txt | tr -s " " ##将多个连续的空格压缩为一个空格 i A E F d q d M d e N f root@DESKTOP-1N42TVH:/home/test# cat a.txt | tr -s "\t " ##将多个连续的制表符压缩为一个制表符 i A E F d q d M d e N f
将多个字符压缩为指定字符:
root@DESKTOP-1N42TVH:/home/test# ls a.txt root@DESKTOP-1N42TVH:/home/test# cat a.txt i A E F d q ddd M d e N ffff root@DESKTOP-1N42TVH:/home/test# cat -A a.txt i A E F$ d q ddd M$ d e N ffff$ root@DESKTOP-1N42TVH:/home/test# cat a.txt | tr -s "d" "H" ##将多个d压缩为一个H i A E F H q H M H e N ffff root@DESKTOP-1N42TVH:/home/test# cat a.txt | tr -s "df" "H" ##将d和f同时压缩为H i A E F H q H M H e N H
6、将某个字符以外的字符替换为指定字符
root@DESKTOP-1N42TVH:/home/test# ls a.txt root@DESKTOP-1N42TVH:/home/test# cat a.txt i A E F d q d M d e N f root@DESKTOP-1N42TVH:/home/test# cat -A a.txt i A E F$ d q d M$ d e N f$ root@DESKTOP-1N42TVH:/home/test# cat a.txt | tr -c "d" "Q" ##将d字符以外的字符全部替换为Q QQQQQQQQdQQQdQQQdQQQQQQQroot@DESKTOP-1N42TVH:/home/test# root@DESKTOP-1N42TVH:/home/test# cat a.txt |tr -c "d\n" "Q" ##将d和换行符以外的字符全部替换为Q QQQQQQQ dQQQdQQ dQQQQQQ root@DESKTOP-1N42TVH:/home/test# cat a.txt |tr -c "d\n " "Q" ##将d、换行符、空格以外的字符全部替换为Q Q Q Q Q d Q d Q d Q Q Q
7、删除指定字符以外的字符
root@DESKTOP-1N42TVH:/home/test# ls a.txt root@DESKTOP-1N42TVH:/home/test# cat a.txt i A E F d q d M d e N f root@DESKTOP-1N42TVH:/home/test# cat -A a.txt i A E F$ d q d M$ d e N f$ root@DESKTOP-1N42TVH:/home/test# cat a.txt | tr -cd "d" ## 删除d字符以外的所有字符 dddroot@DESKTOP-1N42TVH:/home/test# cat a.txt | tr -cd "d\n" ## 删除d和换行符以外的所有字符 dd d root@DESKTOP-1N42TVH:/home/test# cat a.txt | tr -cd "d\n " ##删除d、换行符、空格以外的所有字符 d d d