Linux----tr命令详细使用方法

【原文链接】Linux----tr命令详细使用方法

一、tr命令使用方法

1.1 tr命令的作用

tr命令用于字符转换、替换和删除,主要用于删除文件中的控制符或进行字符串转换等。

1.2 tr命令格式

# 用法1:命令的执行结果交给tr处理,其中string1用于查询,string2用于转换处理
commands | tr ‘string1’ ‘string2’
# 用法2:对来自于filename文件中的内容进行字符替换。
tr 'string1' 'string2' < filename
# 用法3:对来自filename文件的内容查询string1并进行相应的处理,比如删除等。
tr option 'string1' <filename

1.3 tr命令常用的选项

  • -d: 删除字符串
  • -s: 删除所有重复出现字符序列,只保留第一个,即将重复出现字符串压缩为一个字符串

1.4 常用的匹配字符串

字符串含义
a-z或[:lower:]匹配所有小写字母
A-Z或[:upper:]匹配所有大写字母
0-9或[:digit:]匹配所有的数字
[:alnum:]匹配所有字母和数字
[:alpha:]匹配所有字母
[:blank:]所有水平空白
[:punct:]匹配所有标点符号
[:space:]皮牌所有水平或垂直的空格
[:cntrl:]匹配所有控制字符

二、tr命令常用实例

2.1 如何查看文本中的控制字符

比如这里准备一个文件,demo1.conf,内容如下

name
domain
ip
area
user
password
role

vi demo1.conf 编辑文件,然后执行如下命令即可查看文件中的控制字符了

:set list

如下图所示,可以看到每行最后都有一个$符号,这就是回车符

2.2 将所有小写字母转换为大写字母

首相这准备一个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'<test.txt > 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]#

2.3 将文件中的数字替换为&符号

执行如下命令即可将test.txt中的所有数字转换为&符号并写入demo.txt

[root@jiayi-centos-01 opt]# tr '0-9' '&'<test.txt > 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]#

2.4 对命令执行结果中的冒号替换为tab制表符

如下,需要使用管道符

[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]#

2.5 删除文件中的所有小写字母

如下所示,删除小写字母后,每一行还是每一行,只是将小写字母全部删除

[root@jiayi-centos-01 opt]# tr -d 'a-z'<test.txt
::0:0::/://
::1:1::/://
::2:2::/://
::3:4:://://
::4:7::///://
::5:0::/://
::6:0::/://
::7:0::/://
::8:12::///://
::11:0::/://
::12:100:://://
::14:50:FTP U://://
::99:99:N:/://
-::192:192: N M:/://
::81:81:S  :/://
::999:998:U  :/://
::74:74:P- SSH:///://
::89:89::///://
-::1000:1000:-://-://
::998:996:U DNS ://://
::32:32:R D:///://
::107:107: :/://
::997:995:GFS ://://
::75:75: :/://
::996:76:S ://://
::59:59:A          ://://
::29:29:RPC S U:///://
::65534:65534:A NFS U:///://
::1001:1001:://://
[root@jiayi-centos-01 opt]#

2.6 删除文件中的数字冒号和斜线和逗号

如果对应多种匹配可以直接叠加即可

[root@jiayi-centos-01 opt]# tr -d ':/0-9,'<test.txt
rootxrootrootbinbash
binxbinbinsbinnologin
daemonxdaemonsbinsbinnologin
admxadmvaradmsbinnologin
lpxlpvarspoollpdsbinnologin
syncxsyncsbinbinsync
shutdownxshutdownsbinsbinshutdown
haltxhaltsbinsbinhalt
mailxmailvarspoolmailsbinnologin
operatorxoperatorrootsbinnologin
gamesxgamesusrgamessbinnologin
ftpxFTP Uservarftpsbinnologin
nobodyxNobodysbinnologin
systemd-networkxsystemd Network Managementsbinnologin
dbusxSystem message bussbinnologin
polkitdxUser for polkitdsbinnologin
sshdxPrivilege-separated SSHvaremptysshdsbinnologin
postfixxvarspoolpostfixsbinnologin
isrc-adminxisrc-adminhomeisrc-adminbinbash
unboundxUnbound DNS resolveretcunboundsbinnologin
rpcxRpcbind Daemonvarlibrpcbindsbinnologin
qemuxqemu usersbinnologin
glusterxGlusterFS daemonsrunglustersbinnologin
radvdxradvd usersbinnologin
saslauthxSaslauthd userrunsaslauthdsbinnologin
tssxAccount used by the trousers package to sandbox the tcsd daemondevnullsbinnologin
rpcuserxRPC Service Uservarlibnfssbinnologin
nfsnobodyxAnonymous NFS Uservarlibnfssbinnologin
honghuaxhomehonghuabinbash
[root@jiayi-centos-01 opt]#

2.7 针对文件每一行进行压缩,即当存在连续重复的字母时只保留一个

准备文件内容test.txt内容如下

aaaaaaabbbbbbbbbbbbbbbbbcccccccc
abcabcabc

通过-s参数即可实现压缩,如下所示,第二行内容因为不是连续重复,因此不会压缩

[root@jiayi-centos-01 opt]# tr -s 'a-z'<test.txt
abc
abcabcabc
[root@jiayi-centos-01 opt]#
  • 10
    点赞
  • 58
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

redrose2100

您的鼓励是我最大的创作动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值