常用命令-tr、tee 和管道符

tr、tee 和管道符

tr

支持重定向,实现转换或删除字符功能
命令格式 tr [OPTION]… SET1 [SET2]

常用参数选项
-d --delete	删除所有属于第一字符集中的字符
-t --truncate-set1	将第一个字符集中对应的字符转化为第二个字符集中对应的字符
-s --squeeze-repeats	将连续重复的字符去重,以单独一个字符表示
-c -C --complement	取字符集的补集,取反

[字符1-字符2]	从字符1 到字符2 的升序递增过程中经过的所有字符,例如:'a-z','0-9'

\\		反斜杠 \						 
\a		警告声,终端鸣响
\b		退格键
\f		换页
\n		换行
\r		回车
\t		水平制表符
\v		垂直制表符

[:alnum:]		字母和数字
[:alpha:]		字母
[:digit:]		数字
[:lower:]		小写字母
[:upper:]		大写字母
[:space:]		空白字符
[:print:]		可打印字符,包括空格
[:punct:]		标点符号
[:graph:]		图形字符,不包括空格
[:cntrl:]	  	控制(非打印)字符
[:xdigit:]		十六进制字符										  

范例

#该命令会把/etc/issue 中的小写字符都转换成大写字符
[root@centos8 data]#tr 'a-z' 'A-Z' < /etc/issue

#删除fstab文件中的所有abc中任意字符
[root@centos8 data]#tr -d abc < /etc/fstab

#删除除了ace中的字符,只保留ace
[root@centos8 data]#tr -dc 'ace'
abcefe1232443
acee[root@centos8 data]#

#删除fstab文件中的所有字母
[root@centos8 data]#tr -d '[:alpha:]' < /etc/fstab 

#
# //
#       30 09:33:14 2020
#
#  ,  ,    '///'.
#    (5), (8), (8) / (8)   .
#
#    ,  ' -'   
#     .
#
=75303-925-49-77-39466618 /                                    0 0
=1672-59-483-7-79043186 /                   4            1 2
=1805-775-407-3-4391179 /                                0 0
=009821-957-41-48-87839713                                 0 0

#将文件中的连续空格替换为一个空格
[root@centos8 data]#df
Filesystem     1K-blocks    Used Available Use% Mounted on
devtmpfs          989668       0    989668   0% /dev
tmpfs            1006108       0   1006108   0% /dev/shm
tmpfs            1006108    8872    997236   1% /run
tmpfs            1006108       0   1006108   0% /sys/fs/cgroup
/dev/nvme0n1p2 104806400 2200788 102605612   3% /
/dev/nvme0n1p5  31441920  252408  31189512   1% /data
/dev/nvme0n1p1    999320  114404    816104  13% /boot
tmpfs             201220       0    201220   0% /run/user/0
[root@centos8 data]#df > df.log
[root@centos8 data]#tr -s ' ' < df.log 
Filesystem 1K-blocks Used Available Use% Mounted on
devtmpfs 989668 0 989668 0% /dev
tmpfs 1006108 0 1006108 0% /dev/shm
tmpfs 1006108 8872 997236 1% /run
tmpfs 1006108 0 1006108 0% /sys/fs/cgroup
/dev/nvme0n1p2 104806400 2200788 102605612 3% /
/dev/nvme0n1p5 31441920 252408 31189512 1% /data
/dev/nvme0n1p1 999320 114404 816104 13% /boot
tmpfs 201220 0 201220 0% /run/user/0

#将windows 记事本建立的文本文件转换成linux格式的文本文件
[root@centos8 data]#tr -d '\r' < win.txt > linux.txt

#把文本中的换行符转换为+号,做数学运算
[root@centos8 ~]#echo {1..100} | tr ' ' '+' | bc

管道

管道用来连接多个命令,使用符号 | 表示
命令格式:命令1 | 命令2 | 命令3 | …
功能说明
1 将命令1 的STDOUT(标准输出)发送给命令2的STDIN(标准输入)来处理,命令2的STDOUT发送给命令3的STDIN来处理
2 所有命令会在当前shell 进程的子shell 进程中执行
3 具有组合多种工具的功能

**注意:**STDERR默认不能通过管道转发,可利用2>&1 或 |& 实现

命令1 2>&1 | 命令2
命令1 |& 命令2

范例

#将字母转换成大写字母,注意:错误输出没有转换
[root@centos8 ~]#ls /data /xxx | tr 'a-z' 'A-Z'
ls: cannot access '/xxx': No such file or directory
/DATA:
F11.TXT
F1.TXT
F2.TXT

#将字母转换成大写字母,使用格式:命令1 2>&1 | 命令2
[root@centos8 ~]#ls /data /xxx 2>&1 | tr 'a-z' 'A-Z'
LS: CANNOT ACCESS '/XXX': NO SUCH FILE OR DIRECTORY
/DATA:
F11.TXT
F1.TXT
F2.TXT

#将字母转换成大写字母,使用格式:命令1 |& 命令2
[root@centos8 ~]#ls /data /xxx |& tr 'a-z' 'A-Z'
LS: CANNOT ACCESS '/XXX': NO SUCH FILE OR DIRECTORY
/DATA:
F11.TXT
F1.TXT
F2.TXT

#把文本中的换行符转换为+号,做数学运算
[root@centos8 ~]#seq -s + 1 100 | bc
[root@centos8 ~]#seq -s + 1 2 100 | bc

#修改用户密码
[root@centos8 ~]#echo Ad1234 | passwd --stdin dawn &> /dev/null
[root@centos8 ~]#echo Ad1234 | passwd --stdin dawn
[root@centos8 ~]#cat password.txt | passwd --stdin dawn
[root@centos8 ~]#passwd --stdin dawn < password.txt

tee

可接收标准输入,并重定向到多个目标,经常配合管道符一起使用。可实现同时将数据流分送到文件和终端

作用
1 保存不同阶段的输出
2 复杂管道的故障排除
2 同时查看和记录输出

命令格式 tee [OPTION]… [FILE]…

常用命令参数
-a	追加,默认是覆盖

将命令1 的stdout 保存在文件中,做为命令2 的输入
命令1 | tee [-a] 文件名 | 命令2

范例

[root@centos8 ~]#hostname | tee -a tee.log | tr 'a-z' 'A-Z'
CENTOS8.DAWN
[root@centos8 ~]#cat tee.log 
centos8.dawn

重定向中的符号 -

#将文件内容打包,但打包的数据不记录到文件,而是传给stdout,经过管道后,将tar -cvf - /home 传送给后面的tar -xvf -,后面的这个 - 则是取前面一个命令的stdout,因此,就不需要用临时文件了
[root@centos8 ~]#tar -cvf - /home | tar -xvf -
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值