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

服务器 0

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

文章目录

  • 一、tr命令使用方法
    • 1.1 tr命令的作用
    • 1.2 tr命令格式
    • 1.3 tr命令常用的选项
    • 1.4 常用的匹配字符串
  • 二、tr命令常用实例
    • 2.1 如何查看文本中的控制字符
    • 2.2 将所有小写字母转换为大写字母
    • 2.3 将文件中的数字替换为&符号
    • 2.4 对命令执行结果中的冒号替换为tab制表符
    • 2.5 删除文件中的所有小写字母
    • 2.6 删除文件中的数字冒号和斜线和逗号
    • 2.7 针对文件每一行进行压缩,即当存在连续重复的字母时只保留一个

一、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,内容如下

namedomainipareauserpasswordrole

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

:set list

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

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

首相这准备一个test.txt文件

cat /etc/passwd > test.txt

内容如下:

[root@jiayi-centos-01 opt]# cat test.txtroot:x:0:0:root:/root:/bin/bashbin:x:1:1:bin:/bin:/sbin/nologindaemon:x:2:2:daemon:/sbin:/sbin/nologinadm:x:3:4:adm:/var/adm:/sbin/nologinlp:x:4:7:lp:/var/spool/lpd:/sbin/nologinsync:x:5:0:sync:/sbin:/bin/syncshutdown:x:6:0:shutdown:/sbin:/sbin/shutdownhalt:x:7:0:halt:/sbin:/sbin/haltmail:x:8:12:mail:/var/spool/mail:/sbin/nologinoperator:x:11:0:operator:/root:/sbin/nologingames:x:12:100:games:/usr/games:/sbin/nologinftp:x:14:50:FTP User:/var/ftp:/sbin/nologinnobody:x:99:99:Nobody:/:/sbin/nologinsystemd-network:x:192:192:systemd Network Management:/:/sbin/nologindbus:x:81:81:System message bus:/:/sbin/nologinpolkitd:x:999:998:User for polkitd:/:/sbin/nologinsshd:x:74:74:Privilege-separated SSH:/var/empty/sshd:/sbin/nologinpostfix:x:89:89::/var/spool/postfix:/sbin/nologinisrc-admin:x:1000:1000:isrc-admin:/home/isrc-admin:/bin/bashunbound:x:998:996:Unbound DNS resolver:/etc/unbound:/sbin/nologinrpc:x:32:32:Rpcbind Daemon:/var/lib/rpcbind:/sbin/nologinqemu:x:107:107:qemu user:/:/sbin/nologingluster:x:997:995:GlusterFS daemons:/run/gluster:/sbin/nologinradvd:x:75:75:radvd user:/:/sbin/nologinsaslauth:x:996:76:Saslauthd user:/run/saslauthd:/sbin/nologintss:x:59:59:Account used by the trousers package to sandbox the tcsd daemon:/dev/null:/sbin/nologinrpcuser:x:29:29:RPC Service User:/var/lib/nfs:/sbin/nologinnfsnobody:x:65534:65534:Anonymous NFS User:/var/lib/nfs:/sbin/nologinhonghua: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.txtROOT:X:0:0:ROOT:/ROOT:/BIN/BASHBIN:X:1:1:BIN:/BIN:/SBIN/NOLOGINDAEMON:X:2:2:DAEMON:/SBIN:/SBIN/NOLOGINADM:X:3:4:ADM:/VAR/ADM:/SBIN/NOLOGINLP:X:4:7:LP:/VAR/SPOOL/LPD:/SBIN/NOLOGINSYNC:X:5:0:SYNC:/SBIN:/BIN/SYNCSHUTDOWN:X:6:0:SHUTDOWN:/SBIN:/SBIN/SHUTDOWNHALT:X:7:0:HALT:/SBIN:/SBIN/HALTMAIL:X:8:12:MAIL:/VAR/SPOOL/MAIL:/SBIN/NOLOGINOPERATOR:X:11:0:OPERATOR:/ROOT:/SBIN/NOLOGINGAMES:X:12:100:GAMES:/USR/GAMES:/SBIN/NOLOGINFTP:X:14:50:FTP USER:/VAR/FTP:/SBIN/NOLOGINNOBODY:X:99:99:NOBODY:/:/SBIN/NOLOGINSYSTEMD-NETWORK:X:192:192:SYSTEMD NETWORK MANAGEMENT:/:/SBIN/NOLOGINDBUS:X:81:81:SYSTEM MESSAGE BUS:/:/SBIN/NOLOGINPOLKITD:X:999:998:USER FOR POLKITD:/:/SBIN/NOLOGINSSHD:X:74:74:PRIVILEGE-SEPARATED SSH:/VAR/EMPTY/SSHD:/SBIN/NOLOGINPOSTFIX:X:89:89::/VAR/SPOOL/POSTFIX:/SBIN/NOLOGINISRC-ADMIN:X:1000:1000:ISRC-ADMIN:/HOME/ISRC-ADMIN:/BIN/BASHUNBOUND:X:998:996:UNBOUND DNS RESOLVER:/ETC/UNBOUND:/SBIN/NOLOGINRPC:X:32:32:RPCBIND DAEMON:/VAR/LIB/RPCBIND:/SBIN/NOLOGINQEMU:X:107:107:QEMU USER:/:/SBIN/NOLOGINGLUSTER:X:997:995:GLUSTERFS DAEMONS:/RUN/GLUSTER:/SBIN/NOLOGINRADVD:X:75:75:RADVD USER:/:/SBIN/NOLOGINSASLAUTH:X:996:76:SASLAUTHD USER:/RUN/SASLAUTHD:/SBIN/NOLOGINTSS:X:59:59:ACCOUNT USED BY THE TROUSERS PACKAGE TO SANDBOX THE TCSD DAEMON:/DEV/NULL:/SBIN/NOLOGINRPCUSER:X:29:29:RPC SERVICE USER:/VAR/LIB/NFS:/SBIN/NOLOGINNFSNOBODY:X:65534:65534:ANONYMOUS NFS USER:/VAR/LIB/NFS:/SBIN/NOLOGINHONGHUA: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.txtroot:x:&:&:root:/root:/bin/bashbin:x:&:&:bin:/bin:/sbin/nologindaemon:x:&:&:daemon:/sbin:/sbin/nologinadm:x:&:&:adm:/var/adm:/sbin/nologinlp:x:&:&:lp:/var/spool/lpd:/sbin/nologinsync:x:&:&:sync:/sbin:/bin/syncshutdown:x:&:&:shutdown:/sbin:/sbin/shutdownhalt:x:&:&:halt:/sbin:/sbin/haltmail:x:&:&&:mail:/var/spool/mail:/sbin/nologinoperator:x:&&:&:operator:/root:/sbin/nologingames:x:&&:&&&:games:/usr/games:/sbin/nologinftp:x:&&:&&:FTP User:/var/ftp:/sbin/nologinnobody:x:&&:&&:Nobody:/:/sbin/nologinsystemd-network:x:&&&:&&&:systemd Network Management:/:/sbin/nologindbus:x:&&:&&:System message bus:/:/sbin/nologinpolkitd:x:&&&:&&&:User for polkitd:/:/sbin/nologinsshd:x:&&:&&:Privilege-separated SSH:/var/empty/sshd:/sbin/nologinpostfix:x:&&:&&::/var/spool/postfix:/sbin/nologinisrc-admin:x:&&&&:&&&&:isrc-admin:/home/isrc-admin:/bin/bashunbound:x:&&&:&&&:Unbound DNS resolver:/etc/unbound:/sbin/nologinrpc:x:&&:&&:Rpcbind Daemon:/var/lib/rpcbind:/sbin/nologinqemu:x:&&&:&&&:qemu user:/:/sbin/nologingluster:x:&&&:&&&:GlusterFS daemons:/run/gluster:/sbin/nologinradvd:x:&&:&&:radvd user:/:/sbin/nologinsaslauth:x:&&&:&&:Saslauthd user:/run/saslauthd:/sbin/nologintss:x:&&:&&:Account used by the trousers package to sandbox the tcsd daemon:/dev/null:/sbin/nologinrpcuser:x:&&:&&:RPC Service User:/var/lib/nfs:/sbin/nologinnfsnobody:x:&&&&&:&&&&&:Anonymous NFS User:/var/lib/nfs:/sbin/nologinhonghua: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/bashbin     x       1       1       bin     /bin    /sbin/nologindaemon  x       2       2       daemon  /sbin   /sbin/nologinadm     x       3       4       adm     /var/adm        /sbin/nologinlp      x       4       7       lp      /var/spool/lpd  /sbin/nologinsync    x       5       0       sync    /sbin   /bin/syncshutdown        x       6       0       shutdown        /sbin   /sbin/shutdownhalt    x       7       0       halt    /sbin   /sbin/haltmail    x       8       12      mail    /var/spool/mail /sbin/nologinoperator        x       11      0       operator        /root   /sbin/nologingames   x       12      100     games   /usr/games      /sbin/nologinftp     x       14      50      FTP User        /var/ftp        /sbin/nologinnobody  x       99      99      Nobody  /       /sbin/nologinsystemd-network x       192     192     systemd Network Management      /       /sbin/nologindbus    x       81      81      System message bus      /       /sbin/nologinpolkitd x       999     998     User for polkitd        /       /sbin/nologinsshd    x       74      74      Privilege-separated SSH /var/empty/sshd /sbin/nologinpostfix x       89      89              /var/spool/postfix      /sbin/nologinisrc-admin      x       1000    1000    isrc-admin      /home/isrc-admin        /bin/bashunbound x       998     996     Unbound DNS resolver    /etc/unbound    /sbin/nologinrpc     x       32      32      Rpcbind Daemon  /var/lib/rpcbind        /sbin/nologinqemu    x       107     107     qemu user       /       /sbin/nologingluster x       997     995     GlusterFS daemons       /run/gluster    /sbin/nologinradvd   x       75      75      radvd user      /       /sbin/nologinsaslauth        x       996     76      Saslauthd user  /run/saslauthd  /sbin/nologintss     x       59      59      Account used by the trousers package to sandbox the tcsd daemon /dev/null  /sbin/nologinrpcuser x       29      29      RPC Service User        /var/lib/nfs    /sbin/nologinnfsnobody       x       65534   65534   Anonymous NFS User      /var/lib/nfs    /sbin/nologinhonghua 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.txtrootxrootrootbinbashbinxbinbinsbinnologindaemonxdaemonsbinsbinnologinadmxadmvaradmsbinnologinlpxlpvarspoollpdsbinnologinsyncxsyncsbinbinsyncshutdownxshutdownsbinsbinshutdownhaltxhaltsbinsbinhaltmailxmailvarspoolmailsbinnologinoperatorxoperatorrootsbinnologingamesxgamesusrgamessbinnologinftpxFTP UservarftpsbinnologinnobodyxNobodysbinnologinsystemd-networkxsystemd Network ManagementsbinnologindbusxSystem message bussbinnologinpolkitdxUser for polkitdsbinnologinsshdxPrivilege-separated SSHvaremptysshdsbinnologinpostfixxvarspoolpostfixsbinnologinisrc-adminxisrc-adminhomeisrc-adminbinbashunboundxUnbound DNS resolveretcunboundsbinnologinrpcxRpcbind Daemonvarlibrpcbindsbinnologinqemuxqemu usersbinnologinglusterxGlusterFS daemonsrunglustersbinnologinradvdxradvd usersbinnologinsaslauthxSaslauthd userrunsaslauthdsbinnologintssxAccount used by the trousers package to sandbox the tcsd daemondevnullsbinnologinrpcuserxRPC Service UservarlibnfssbinnologinnfsnobodyxAnonymous NFS Uservarlibnfssbinnologinhonghuaxhomehonghuabinbash[root@jiayi-centos-01 opt]#

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

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

aaaaaaabbbbbbbbbbbbbbbbbccccccccabcabcabc

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

[root@jiayi-centos-01 opt]# tr -s 'a-z'<test.txtabcabcabcabc[root@jiayi-centos-01 opt]#

也许您对下面的内容还感兴趣: