【原文链接】Linux----tr命令详细使用方法
tr命令用于字符转换、替换和删除,主要用于删除文件中的控制符或进行字符串转换等。
# 用法1:命令的执行结果交给tr处理,其中string1用于查询,string2用于转换处理
commands | tr ‘string1’ ‘string2’
# 用法2:对来自于filename文件中的内容进行字符替换。
tr 'string1' 'string2' < filename
# 用法3:对来自filename文件的内容查询string1并进行相应的处理,比如删除等。
tr option 'string1'
字符串 | 含义 |
---|---|
a-z或[:lower:] | 匹配所有小写字母 |
A-Z或[:upper:] | 匹配所有大写字母 |
0-9或[:digit:] | 匹配所有的数字 |
[:alnum:] | 匹配所有字母和数字 |
[:alpha:] | 匹配所有字母 |
[:blank:] | 所有水平空白 |
[:punct:] | 匹配所有标点符号 |
[:space:] | 皮牌所有水平或垂直的空格 |
[:cntrl:] | 匹配所有控制字符 |
比如这里准备一个文件,demo1.conf,内容如下
name
domain
ip
area
user
password
role
vi demo1.conf 编辑文件,然后执行如下命令即可查看文件中的控制字符了
:set list
如下图所示,可以看到每行最后都有一个$符号,这就是回车符
首相这准备一个test.txt文件
cat /etc/passwd > test.txt
内容如下:
[root@jiayi-centos-01 opt]# cat test.txt
root:x:0:0:root:/root:/bin/bash
bin:x:1:1:bin:/bin:/sbin/nologin
daemon:x:2:2:daemon:/sbin:/sbin/nologin
adm:x:3:4:adm:/var/adm:/sbin/nologin
lp:x:4:7:lp:/var/spool/lpd:/sbin/nologin
sync:x:5:0:sync:/sbin:/bin/sync
shutdown:x:6:0:shutdown:/sbin:/sbin/shutdown
halt:x:7:0:halt:/sbin:/sbin/halt
mail:x:8:12:mail:/var/spool/mail:/sbin/nologin
operator:x:11:0:operator:/root:/sbin/nologin
games:x:12:100:games:/usr/games:/sbin/nologin
ftp:x:14:50:FTP User:/var/ftp:/sbin/nologin
nobody:x:99:99:Nobody:/:/sbin/nologin
systemd-network:x:192:192:systemd Network Management:/:/sbin/nologin
dbus:x:81:81:System message bus:/:/sbin/nologin
polkitd:x:999:998:User for polkitd:/:/sbin/nologin
sshd:x:74:74:Privilege-separated SSH:/var/empty/sshd:/sbin/nologin
postfix:x:89:89::/var/spool/postfix:/sbin/nologin
isrc-admin:x:1000:1000:isrc-admin:/home/isrc-admin:/bin/bash
unbound:x:998:996:Unbound DNS resolver:/etc/unbound:/sbin/nologin
rpc:x:32:32:Rpcbind Daemon:/var/lib/rpcbind:/sbin/nologin
qemu:x:107:107:qemu user:/:/sbin/nologin
gluster:x:997:995:GlusterFS daemons:/run/gluster:/sbin/nologin
radvd:x:75:75:radvd user:/:/sbin/nologin
saslauth:x:996:76:Saslauthd user:/run/saslauthd:/sbin/nologin
tss:x:59:59:Account used by the trousers package to sandbox the tcsd daemon:/dev/null:/sbin/nologin
rpcuser:x:29:29:RPC Service User:/var/lib/nfs:/sbin/nologin
nfsnobody:x:65534:65534:Anonymous NFS User:/var/lib/nfs:/sbin/nologin
honghua:x:1001:1001::/home/honghua:/bin/bash
[root@jiayi-centos-01 opt]#
执行下面命令即可将test.txt中小写替换为答谢,并写入demo.txt
[root@jiayi-centos-01 opt]# tr 'a-z' 'A-Z' demo.txt
[root@jiayi-centos-01 opt]# cat demo.txt
ROOT:X:0:0:ROOT:/ROOT:/BIN/BASH
BIN:X:1:1:BIN:/BIN:/SBIN/NOLOGIN
DAEMON:X:2:2:DAEMON:/SBIN:/SBIN/NOLOGIN
ADM:X:3:4:ADM:/VAR/ADM:/SBIN/NOLOGIN
LP:X:4:7:LP:/VAR/SPOOL/LPD:/SBIN/NOLOGIN
SYNC:X:5:0:SYNC:/SBIN:/BIN/SYNC
SHUTDOWN:X:6:0:SHUTDOWN:/SBIN:/SBIN/SHUTDOWN
HALT:X:7:0:HALT:/SBIN:/SBIN/HALT
MAIL:X:8:12:MAIL:/VAR/SPOOL/MAIL:/SBIN/NOLOGIN
OPERATOR:X:11:0:OPERATOR:/ROOT:/SBIN/NOLOGIN
GAMES:X:12:100:GAMES:/USR/GAMES:/SBIN/NOLOGIN
FTP:X:14:50:FTP USER:/VAR/FTP:/SBIN/NOLOGIN
NOBODY:X:99:99:NOBODY:/:/SBIN/NOLOGIN
SYSTEMD-NETWORK:X:192:192:SYSTEMD NETWORK MANAGEMENT:/:/SBIN/NOLOGIN
DBUS:X:81:81:SYSTEM MESSAGE BUS:/:/SBIN/NOLOGIN
POLKITD:X:999:998:USER FOR POLKITD:/:/SBIN/NOLOGIN
SSHD:X:74:74:PRIVILEGE-SEPARATED SSH:/VAR/EMPTY/SSHD:/SBIN/NOLOGIN
POSTFIX:X:89:89::/VAR/SPOOL/POSTFIX:/SBIN/NOLOGIN
ISRC-ADMIN:X:1000:1000:ISRC-ADMIN:/HOME/ISRC-ADMIN:/BIN/BASH
UNBOUND:X:998:996:UNBOUND DNS RESOLVER:/ETC/UNBOUND:/SBIN/NOLOGIN
RPC:X:32:32:RPCBIND DAEMON:/VAR/LIB/RPCBIND:/SBIN/NOLOGIN
QEMU:X:107:107:QEMU USER:/:/SBIN/NOLOGIN
GLUSTER:X:997:995:GLUSTERFS DAEMONS:/RUN/GLUSTER:/SBIN/NOLOGIN
RADVD:X:75:75:RADVD USER:/:/SBIN/NOLOGIN
SASLAUTH:X:996:76:SASLAUTHD USER:/RUN/SASLAUTHD:/SBIN/NOLOGIN
TSS:X:59:59:ACCOUNT USED BY THE TROUSERS PACKAGE TO SANDBOX THE TCSD DAEMON:/DEV/NULL:/SBIN/NOLOGIN
RPCUSER:X:29:29:RPC SERVICE USER:/VAR/LIB/NFS:/SBIN/NOLOGIN
NFSNOBODY:X:65534:65534:ANONYMOUS NFS USER:/VAR/LIB/NFS:/SBIN/NOLOGIN
HONGHUA:X:1001:1001::/HOME/HONGHUA:/BIN/BASH
[root@jiayi-centos-01 opt]#
执行如下命令即可将test.txt中的所有数字转换为&符号并写入demo.txt
[root@jiayi-centos-01 opt]# tr '0-9' '&' demo.txt
[root@jiayi-centos-01 opt]# cat demo.txt
root:x:&:&:root:/root:/bin/bash
bin:x:&:&:bin:/bin:/sbin/nologin
daemon:x:&:&:daemon:/sbin:/sbin/nologin
adm:x:&:&:adm:/var/adm:/sbin/nologin
lp:x:&:&:lp:/var/spool/lpd:/sbin/nologin
sync:x:&:&:sync:/sbin:/bin/sync
shutdown:x:&:&:shutdown:/sbin:/sbin/shutdown
halt:x:&:&:halt:/sbin:/sbin/halt
mail:x:&:&&:mail:/var/spool/mail:/sbin/nologin
operator:x:&&:&:operator:/root:/sbin/nologin
games:x:&&:&&&:games:/usr/games:/sbin/nologin
ftp:x:&&:&&:FTP User:/var/ftp:/sbin/nologin
nobody:x:&&:&&:Nobody:/:/sbin/nologin
systemd-network:x:&&&:&&&:systemd Network Management:/:/sbin/nologin
dbus:x:&&:&&:System message bus:/:/sbin/nologin
polkitd:x:&&&:&&&:User for polkitd:/:/sbin/nologin
sshd:x:&&:&&:Privilege-separated SSH:/var/empty/sshd:/sbin/nologin
postfix:x:&&:&&::/var/spool/postfix:/sbin/nologin
isrc-admin:x:&&&&:&&&&:isrc-admin:/home/isrc-admin:/bin/bash
unbound:x:&&&:&&&:Unbound DNS resolver:/etc/unbound:/sbin/nologin
rpc:x:&&:&&:Rpcbind Daemon:/var/lib/rpcbind:/sbin/nologin
qemu:x:&&&:&&&:qemu user:/:/sbin/nologin
gluster:x:&&&:&&&:GlusterFS daemons:/run/gluster:/sbin/nologin
radvd:x:&&:&&:radvd user:/:/sbin/nologin
saslauth:x:&&&:&&:Saslauthd user:/run/saslauthd:/sbin/nologin
tss:x:&&:&&:Account used by the trousers package to sandbox the tcsd daemon:/dev/null:/sbin/nologin
rpcuser:x:&&:&&:RPC Service User:/var/lib/nfs:/sbin/nologin
nfsnobody:x:&&&&&:&&&&&:Anonymous NFS User:/var/lib/nfs:/sbin/nologin
honghua:x:&&&&:&&&&::/home/honghua:/bin/bash
[root@jiayi-centos-01 opt]#
如下,需要使用管道符
[root@jiayi-centos-01 opt]# cat test.txt | tr ':' '\t'
root x 0 0 root /root /bin/bash
bin x 1 1 bin /bin /sbin/nologin
daemon x 2 2 daemon /sbin /sbin/nologin
adm x 3 4 adm /var/adm /sbin/nologin
lp x 4 7 lp /var/spool/lpd /sbin/nologin
sync x 5 0 sync /sbin /bin/sync
shutdown x 6 0 shutdown /sbin /sbin/shutdown
halt x 7 0 halt /sbin /sbin/halt
mail x 8 12 mail /var/spool/mail /sbin/nologin
operator x 11 0 operator /root /sbin/nologin
games x 12 100 games /usr/games /sbin/nologin
ftp x 14 50 FTP User /var/ftp /sbin/nologin
nobody x 99 99 Nobody / /sbin/nologin
systemd-network x 192 192 systemd Network Management / /sbin/nologin
dbus x 81 81 System message bus / /sbin/nologin
polkitd x 999 998 User for polkitd / /sbin/nologin
sshd x 74 74 Privilege-separated SSH /var/empty/sshd /sbin/nologin
postfix x 89 89 /var/spool/postfix /sbin/nologin
isrc-admin x 1000 1000 isrc-admin /home/isrc-admin /bin/bash
unbound x 998 996 Unbound DNS resolver /etc/unbound /sbin/nologin
rpc x 32 32 Rpcbind Daemon /var/lib/rpcbind /sbin/nologin
qemu x 107 107 qemu user / /sbin/nologin
gluster x 997 995 GlusterFS daemons /run/gluster /sbin/nologin
radvd x 75 75 radvd user / /sbin/nologin
saslauth x 996 76 Saslauthd user /run/saslauthd /sbin/nologin
tss x 59 59 Account used by the trousers package to sandbox the tcsd daemon /dev/null /sbin/nologin
rpcuser x 29 29 RPC Service User /var/lib/nfs /sbin/nologin
nfsnobody x 65534 65534 Anonymous NFS User /var/lib/nfs /sbin/nologin
honghua x 1001 1001 /home/honghua /bin/bash
[root@jiayi-centos-01 opt]#
如下所示,删除小写字母后,每一行还是每一行,只是将小写字母全部删除
[root@jiayi-centos-01 opt]# tr -d 'a-z'
如果对应多种匹配可以直接叠加即可
[root@jiayi-centos-01 opt]# tr -d ':/0-9,'
准备文件内容test.txt内容如下
aaaaaaabbbbbbbbbbbbbbbbbcccccccc
abcabcabc
通过-s参数即可实现压缩,如下所示,第二行内容因为不是连续重复,因此不会压缩
[root@jiayi-centos-01 opt]# tr -s 'a-z'