概述
管道输出我们在之前就提到过
管道操作符号 “|” ,主要用来连接左右两个命令, 将左侧的命令的标准输出, 交给右侧命令的标准输入。但是无法传递标准错误输出至后者命令。
流程示意图
使用格式:
命令1 | 命令2
案例演示
-
将/etc/passwd 中的用户按 UID 大小排序
首先使用awk命令将UID一列取出,再用sort排序
[root@localhost ~]# awk -F ':' '{print $3}' /etc/passwd | sort -n
-
统计当前/etc/passwd 中用户使用的 shell 类型
先使用awk命令去除shell类型列,使用sort排序胡再uniq去重,
[root@localhost ~]# awk -F ':' '{print $7}' /etc/passwd | sort | uniq -c
-
打印根分区已用空间的百分比(仅打印数字)
先使用df-h打印磁盘容量,使用grep提取根分区容量的行,最后再使用awk提取可用空间百分比一列,进行一次数据处理
[root@localhost ~]# df -h | grep "/$" | awk -F '[ %]+' '{print $5}'
’
管道中的tee技术
tee技术就是将管道左侧命令的输出结果通过tee输出一份到屏幕或者某个文件上。如图
[root@localhost ~]# ip addr |grep 'inet ' |tee ip.txt |awk -F"/" '{print $1}' |awk '{print $2}'
127.0.0.1
10.0.0.200
[root@localhost ~]# cat ip.txt
inet 127.0.0.1/8 scope host lo
inet 10.0.0.200/24 brd 10.0.0.255 scope global noprefixroute ens32
tee和重定向的区别:
重定向使直接将内容写入date.txt文件中
而tee命令执行会输出至屏幕,但会同时保存一份至date.txt文件中
xargs参数传递
xargs参数传递,主要让一些不支持管道的命令可以使用管道技术
例如:
[root@localhost ~]# which cat | xargs ls- l
-rwxr-xr-x. 1 root root 54160 Oct 31 2018 /usr/bin/cat
如果 ls -l 前不加xargs,则查看到的就是当前所在目录的信息了