通俗来讲,就是把前一个命令的标准输出作为后一个命令的标准输入处理,注意:
命令需要有把前一个命令的标准输出作为标准输入的能力,才能使用管道
支持相关功能的命令很多,就只给例子了
过滤信息
在last
命令的输出中,找到带root
的行,输出前5行
[user1@qmmms ~]$ last | grep "root" | head -n 5
root pts/0 183.210.228.179 Thu Sep 1 23:20 - down (00:02)
root pts/0 183.210.228.179 Thu Sep 1 22:27 - 22:28 (00:01)
root pts/0 183.210.228.179 Thu Sep 1 17:13 - 17:19 (00:06)
root pts/0 183.210.228.179 Wed Aug 31 23:09 - down (00:01)
root pts/0 183.210.228.179 Wed Aug 31 21:34 - 21:37 (00:03)
在last
命令的输出中,找到不带root
的行(-v
),输出行号(-n
),输出最后5行
[user1@qmmms ~]$ last | grep -nv "root" | tail -n 5
124:reboot system boot 3.10.0-1160.53.1 Wed Aug 31 13:05 - 23:11 (10:06)
126:reboot system boot 3.10.0-1160.53.1 Wed Aug 31 12:57 - 13:03 (00:06)
138:reboot system boot 3.10.0-1160.53.1 Wed Aug 31 08:57 - 12:57 (04:00)
139:
140:wtmp begins Thu Feb 10 15:19:42 2022
当然,grep
命令也支持查找文件内容
[user1@qmmms ~]$ grep "int" simple_add.cpp
int main(){
int n = 0;
int num = 0;
在last
命令的输出中,以空格作为分隔符(-d
)切割,保留第一个位置的信息(-f
),输出前3行
[user1@qmmms ~]$ last | cut -d ' ' -f 1 | head -n 3
user1
user1
user1
排序
在/etc/passwd
文件内容的输出中,排序,输出前3行
[root@qmmms ~]# cat /etc/passwd | sort | head -n 3
adm:x:3:4:adm:/var/adm:/sbin/nologin
bin:x:1:1:bin:/bin:/sbin/nologin
chrony:x:998:996::/var/lib/chrony:/sbin/nologin
在/etc/passwd
文件内容的输出中,以:
作为分隔符(-t
),对第三个位置(-k
)位置的数据排序,不采取默认字符串的排序方式而使用纯数字的排序方式(-n
),输出前3行
[root@qmmms ~]# cat /etc/passwd | sort -t ':' -k 3 -n | head -n 3
root:x:0:0:root:/root:/bin/bash
bin:x:1:1:bin:/bin:/sbin/nologin
daemon:x:2:2:daemon:/sbin:/sbin/nologin
去重
在last
命令的输出中,以空格作为分隔符(-d
)切割,保留第一个位置的信息(-f
),排序,去重,统计个数(-c
)
[root@qmmms ~]# last | cut -d ' ' -f1 | sort | uniq -c
1
1 qms
14 reboot
23 root
102 user1
1 wtmp
统计
在/etc/man_db.conf
文件内容的输出中,分别统计行,字数,字符数
[user1@qmmms ~]$ cat /etc/man_db.conf | wc
131 723 5171
文件分割和拼接
将./services
文件分割为300k的子文件(-b
),子文件命名为services+其他标识符
注:按照行数划分使用-l
[user1@qmmms dir_test]$ split -b 300k ./services services
[user1@qmmms dir_test]$ ll
总用量 1312
-rw-r--r-- 1 user1 basic_users 670293 9月 18 10:11 services
-rw-r--r-- 1 user1 basic_users 307200 9月 18 10:12 servicesaa
-rw-r--r-- 1 user1 basic_users 307200 9月 18 10:12 servicesab
-rw-r--r-- 1 user1 basic_users 55893 9月 18 10:12 servicesac
再拼接回来,命名为servicesback
[user1@qmmms dir_test]$ cat servicesa* >> servicesback
[user1@qmmms dir_test]$ ll
总用量 1968
-rw-r--r-- 1 user1 basic_users 670293 9月 18 10:11 services
-rw-r--r-- 1 user1 basic_users 307200 9月 18 10:12 servicesaa
-rw-r--r-- 1 user1 basic_users 307200 9月 18 10:12 servicesab
-rw-r--r-- 1 user1 basic_users 55893 9月 18 10:12 servicesac
-rw-r--r-- 1 user1 basic_users 670293 9月 18 10:12 servicesback