linux中tr命令

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

 

posted @ 2022-01-05 12:31  小鲨鱼2018  阅读(233)  评论(0编辑  收藏  举报