加入收藏 | 设为首页 | 会员中心 | 我要投稿 三明站长网 (https://www.0598zz.com/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 服务器 > 搭建环境 > Linux > 正文

linux下grep命令是用来做啥呢?怎样使用?

发布时间:2023-08-09 19:07:13 所属栏目:Linux 来源:未知
导读:   linux下grep命令是用来做什么呢?日常工作中,grep命令的使用是非常多的,grep命令是用来查找文件或标准输出中匹配的行,它的强大之处在于它支持正则表达式。因此这篇文章就和大家聊一
   linux下grep命令是用来做什么呢?日常工作中,grep命令的使用是非常多的,grep命令是用来查找文件或标准输出中匹配的行,它的强大之处在于它支持正则表达式。因此这篇文章就和大家聊一聊linux下的grep命令。
 
  注:本文只介绍grep的用法,关于正则表达式不做介绍。
 
  下面来看看它的一些常见选项以及含义:
 
  选项
 
  -i 搜索时候忽略大小写
 
  -n 列出所有的匹配行,显示行号
 
  -v 反向选择
 
  -c 只输出匹配行的数量
 
  -l 只列出符合匹配的文件名,不列出具体的匹配行
 
  -h 查询多文件时不显示文件名
 
  -r 递归搜索
 
  -q 禁止输出任何结果,已退出状态表示搜索是否成功
 
  --color=auto 将找到的关键字加上颜色显示
 
  -E, --extended-regexp PATTERN 是一个可扩展的正则表达式(缩写为 ERE)
 
  -B, --before-context=NUM 打印以文本起始的NUM 行
 
  -A, --after-context=NUM 打印以文本结尾的NUM 行
 
  下面来介绍grep的一些用法:
 
  我们知道php.ini有一个时区的配置,具体的不太清楚,只知道timezone,现在我们想找到该配置信息,就可以使用grep来查找
 
  # 加上-i选项,忽略大小写
 
  # grep -i timezone /usr/local/php/etc/php.ini
 
  ; Defines the default timezone used by the date functions
 
  ; http://php.net/date.timezone
 
  date.timezone = PRC
 
  grep支持在多个文件中查找
 
  # 这里我们加上-n选项,输出文件的行号
 
  # grep -in stdio itoa.c quicksort.c
 
  itoa.c:2:#include <stdio.h>
 
  quicksort.c:1:#include <stdio.h>
 
  反向选择的-v使用,当我运行了一个程序,想要看看这个程序是否还存在进程中,可以使用下面的方法
 
  # ps aux | grep curl.php
 
  root     14374 98.3  1.2 277844 12396 pts/0    R+   07:54   1:07 php curl.php
 
  root     14404  0.0  0.0 112664   984 pts/2    R+   07:55   0:00 grep --color=auto curl.php
 
  这里就有个问题,我们需要使用-v来过滤掉grep本身的进程
 
  # ps aux | grep curl.php | grep -v grep
 
  root     14374 98.5  1.2 277844 12396 pts/0    R+   07:54   2:36 php curl.php
 
  我们想统计last命令中含root的行数,那么这里就需要用到-c选项了。
 
  # last | grep -c root
 
  353
 
  经常有这种需求,需要批量替换文件中的某文本,那么怎么知道这些文本在哪几个文件中呢。grep可以做到,配合-l选项
 
  # find . -type f -exec grep -l define {} \;
 
  ./find.c
 
  ./itoa2.c
 
  ./wc.c
 
  ./test.c
 
  ./wordcnt.c
 
  ./longestline.c
 
  ./cal.c
 
  ./sortline2.c
 
  ./sortline.c
 
  ./found.c
 
  ./atof.c
 
  下面再看一个例子,该例子用到了-E扩展正则,我们想要过滤掉php.ini文件中的注释行以及空白行
 
  grep -vE '^;|^$' /usr/local/php/etc/php.ini
 
  还有一个常用的选项-r,它可以用来递归查找当前目录下所有文件,以及子目录文件。下面,我们想查看网站目录下还有footer的文件有哪些,可以用下面的命令来查找
 
  grep -rn footer ./
 

(编辑:三明站长网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章