注:本文只介绍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.timezonedate.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.PHProot 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 root353
经常有这种需求,需要批量替换文件中的某文本,那么怎么知道这些文本在哪几个文件中呢。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 ./总结
以上是内存溢出为你收集整理的全面详解linux下grep命令的用法全部内容,希望文章能够帮你解决全面详解linux下grep命令的用法所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)