当前位置: 首页 > article >正文

Linux中的管道符与grep命令

Linux |管道符

管道符在Linux系统中还是比较常用的,比如我们平常使用的catpsls,如果想对查找的内容进行过滤,就会用到grep命令,而管道符就是将这两个命令进行连接的一个符号,Linux会将管道符前面的内容作为后面命令的参数进行执行,举个🌰例子:

ls | grep test # 查找文件名中包含test的文件
ps -ef 	| grep ssh #查找所有与ssh相关的进程

示例1讲解

在上面的第一个例子中,执行ls命令,会获得一个文件列表(如下)

a.txt b.txt c.txt test.txt test1.txt test2.txt

通过管道符之后,以上字段都会成为下一个函数(grep)的参数,而grep命令则用来找到这些字段里面含有test的内容并进行显示,因此得到的结果就是:

test.txt
test1.txt
test2.txt

示例2讲解:

ps -ef命令是列出所有的进程,Linux系统本身就包含很多进程,若是我们再启动一些其他的项目,那么进程将会特别的多,而我们可能仅需要查看一些进程,因此将ps -ef的查询结果作为参数丢给grep命令做一个筛选,就会获得我们想看的哪些进程内容,在我的实验机器中,该命令的结果如下:

root 958 1 0 Mar27 ? 00:00:00 sshd: /usr/sbin/sshd -D [listener] 0 of 10-100 startups
root 959 958 0 Mar27 ? 00:00:00 sshd: jim [priv]
jim 1045 959 0 Mar27 ? 00:00:02 sshd: jim@pts/0
root 44556 1102 0 18:26 pts/1 00:00:00 grep --color=auto ssh

可以看到一共查出来了四条内容,前三条内容为ssh进程相关的内容,而第四条却是「grep命令查找ssh关键字」所产生的进程,又做过几次试验后得知,凡是使用grep查询某个内容,都会产生一个这样的进程,因此进程若是使用grep命令来过滤,同时又不想显示这个「grep」的进程,可以再多加一个管道符来过滤掉最后一条内容:

ps -ef | grep ssh | grep -v grep

在该命令中,我们先使用ps -ef查找所有的进程,随后使用grep ssh过滤出跟ssh有关的进程,最后再使用grep -v命令去除掉含有「grep」关键字的进程,该命令查询结果如下:

root 958 1 0 Mar27 ? 00:00:00 sshd: /usr/sbin/sshd -D [listener] 0 of 10-100 startups
root 959 958 0 Mar27 ? 00:00:00 sshd: jim [priv]
jim 1045 959 0 Mar27 ? 00:00:02 sshd: jim@pts/0

grep 命令

grep 命令是一个非常常用的查找命令,可以用来查找字段或文件中包含的内容,因此,有以下几种用法:

1. 查找某个文件中的某个字段

grep xxx filename # grep 字段 文件名

grep hello test.txt为例,查找结果如下(由于CSDN中Markdown的限制,在字段中无法显示颜色,但是下方的所有hello均为红色):

hello world
hello

2. 统计某个关键字出现的行数

在下方命令中,若某一行含有「一个或多个」我们查找的关键字,统计结果+1,注意统计的是行而不是该关键字出现的次数。

grep -c xxx filename # grep -c 字段 文件名

我创建一个名为hello.txt的文件,内容如下:

hello hellohello hello
hello hello
hello
nohello
abcd

可以看到,在该文件中,一共有4行内容包含hello关键字,使用grep -c hello hello.txt进行统计,结果为「4」。

除此之外,还可以过滤管道符之前命令的内容,如上文所示。


http://www.kler.cn/a/4031.html

相关文章:

  • 简历_使用 Redis 解决集群模式下的 Session 共享问题,使用拦截器实现用户的登录,校验和权限刷新以及对单位时间内请求频繁的用户IP地址进行限流。
  • 网络安全---CMS指纹信息实战
  • 21天学通C++——11多态(引入多态的目的)
  • Nginx三种不同类型的虚拟主机(基于域名、IP 和端口)
  • NumPy;NumPy在数据分析中的应用;NumPy与其他库的搭配使用
  • OpenGL —— 基于Qt的视频播放器 - ffmpeg硬解码,QOpenGL渲染yuv420p或nv12视频(附源码)
  • 【数据库】Mysql数据库的三大范式1NF 2NF 3NF
  • vue 高德地图添加多个点标记
  • 速度与兼容性功能大比拼:7款浏览器测评,哪一款更好用
  • 基于云计算的Java版云HIS系统源码,已在公立二甲医院应用三年
  • 云原生周刊:K8s 在 v1.27 中移除的特性和主要变更
  • 社区之声|Grant Program支持Moonbeam生态壮大
  • 物理机CPU使用率报警
  • 蓝桥杯每日一真题——[蓝桥杯 2021 省 AB2] 负载均衡(优先队列,模拟)
  • 自动指出测试问题,TestGPT来袭,测试工程师,你准备好了么
  • ShowMeAI周刊 | AI独立开发者:帆船旅行但月入万刀;创业吧!新黄金时代来了;资本看好哪些创业方向;被AI震麻的一周again
  • 线程基础知识总结
  • 18个基础命令教你轻松拿捏华为设备的各种状态!-HCIA HCIP
  • leetcode 搜索插入位置(35)
  • GPS时间序列分析---剔除跳跃点,拟合时间序列
  • 基于springboot心理健康管理系统(程序+数据库+文档)014
  • 位置编码Positional Encoding
  • 3D Slicer学习记录(6)-使用PLUSapp连接WebCam并实现marker跟踪
  • Json基本语法
  • 编程题 进制转换(Java实现)
  • Mybatis配置之别名(typeAliases)优化、设置(settings)优化、映射器(mappers)优化以及生命周期和作用域的学习和理解