grep是一个最初用于Unix操作系统的命令行工具。在给出文件列表或标准输入后,grep会对匹配一个或多个正则表达式的文本进行搜索,并只输出匹配(或者不匹配)的行或文本。
本文并不打算详细介绍grep的用法,因为man grep会告诉你这些细节,写本文的初衷只是记录一下自己学习linux命令行工具的过程,以及归纳一些常见用法供自己查阅。
比如,我们经常会在工程中搜索某个类、函数或结构的定义,这里以beego工程目录为例,我们要搜索Controller的定义:
上面只是在当前目录下搜索多个文件,同样的beego为例,我们想搜索Context在工程中的哪个定义中定义的, 使用-r参数,递归查找目录中的文件:
如果我们想知道上述例子中Context在context/context.go文件中的哪一行中定义的,可以通过-n参数指定:
仍然以查找Context为例,想查看匹配行后(After)5行的信息,可以通过指定-A参数实现
同样,想看前(Before)5行的信息,可以通过指定-B参数实现,如果想看匹配行前后5行的上下文(Context)信息,可以通过指定-C参数实现。
grep除了可以在文件中查找指定字符串或正则表达式外,还可以接受标准输入,有时候可能想查找不匹配的行,可以通过-v参数指定。比如我们经常会通过ps查找某个进程是否存在,比如看nginx进程:
除了查找nginx进程外,还有一个grep进程在,这个时候我们可以通过管道再次用grep -v grep把grep进程过滤掉:
仍然是demo.txt为例,我们统计单词this出现的次数,忽略大小写,首先需要指定-o参数查找匹配文本,再使用wc -l进行次数统计:
grep命令的用法是非常丰富的,其最强大的功能是通过与此正则表达式进行匹配,但一涉及到正则表达式,可能就引入一个新的问题——如果使用正则表达式。上面的例子在日常工作中基本够用,如果非要用到正常表式,使用一些简单的正则,如^,$,.,*,+,?,[],,{}基本能满足绝大部分应用场景。
grep 多条件搜索 同时在info.log文件中搜索带有logcat.py和Thread ...
一.【匹配字符】 . 匹配任意单个字符 [ ] 匹配指定范围内的任意字符 [^] 匹配非指定范围内的任意...
在linux下面工作,有些命令能够大大提高效率。本文就向大家介绍find、grep命令,他哥俩可以算是必会的lin...
项目上线之后,或者在测试环境,经常会有bug让我们去排查和修改,这个时候,我们需要在linux系统中使用一些命令帮...

