管道命令

通俗来讲,就是把前一个命令的标准输出作为后一个命令的标准输入处理,注意:

  • 管道命令只会处理标准输出,忽略标准错误输出

  • 命令需要有把前一个命令的标准输出作为标准输入的能力,才能使用管道

支持相关功能的命令很多,就只给例子了

过滤信息


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命令也支持查找文件内容

last命令的输出中,以空格作为分隔符(-d)切割,保留第一个位置的信息(-f),输出前3行

排序


/etc/passwd文件内容的输出中,排序,输出前3行

/etc/passwd文件内容的输出中,以:作为分隔符(-t),对第三个位置(-k)位置的数据排序,不采取默认字符串的排序方式而使用纯数字的排序方式(-n),输出前3行

去重


last命令的输出中,以空格作为分隔符(-d)切割,保留第一个位置的信息(-f),排序,去重,统计个数(-c

统计


/etc/man_db.conf文件内容的输出中,分别统计行,字数,字符数

文件分割和拼接


./services文件分割为300k的子文件(-b),子文件命名为services+其他标识符

注:按照行数划分使用-l

再拼接回来,命名为servicesback

最后更新于