linux grep命令
linux grep命令
grep简介
grep
命令是 global regular expression print
的缩写,用于在文件、多个文件或输入流中进行正则匹配,它会匹配我们在命令行中指定的「文本模式」(Pattern),并将结果输出打印。
其功能是搜索文件内的内容,并打印出来
grep是一个强大的文本搜索工具。grep可用于shell脚本,因为grep通过返回一个状态值来说明搜索的状态,如果模板搜索成功,则返回0,如果搜索不成功,则返回1,如果搜索的文件不存在,则返回2。我们利用这些返回值就可进行一些自动化的文本处理工作。
基本语法
grep [选项参数] 文本模式 文件名
常用参数
-a #不要忽略二进制数据
-A #除了显示符合范本样式的那一行之外,并显示该行之后的内容
-b #在显示符合范本样式的那一行之外,并显示该行之前的内容
-B #除了显示符合样式的那一行之外,并显示该行之前的内容
-c #计算符合范本样式的列数
-C #除了显示符合范本样式的那一列之外,并显示该列之前后的内容
-d #当指定要查找的是目录而非文件时,必须使用这项参数,否则grep命令将回报信息并停止动作
-e #指定字符串作为查找文件内容的范本样式
-E #将范本样式为延伸的普通表示法来使用,意味着使用能使用扩展正则表达式
-f #指定范本文件,其内容有一个或多个范本样式,让grep查找符合范本条件的文件内容,格式为每一列的范本样式
-F #将范本样式视为固定字符串的列表
-G #将范本样式视为普通的表示法来使用
-h #在显示符合范本样式的那一列之前,不标示该列所属的文件名称
-H #在显示符合范本样式的那一列之前,标示该列的文件名称
-i #忽略字符大小写的差别
-l #列出文件内容符合指定的范本样式的文件名称
-L #列出文件内容不符合指定的范本样式的文件名称
-n #在显示符合范本样式的那一列之前,标示出该列的编号
-q #不显示任何信息
-R/-r #此参数的效果和指定“-d recurse”参数相同
-s #不显示错误信息
-v #反转查找
-V #显示版本信息
-w #只显示全字符合的列
-x #只显示全列符合的列
-y #此参数效果跟“-i”相同
-o #只输出文件中匹配到的部分
正则表达式
^ #匹配以XX开头的行
$ #匹配以XX结尾的行
与标准输入流联动
Linux 中的标准输入输出、重定向、管道符
基本写法:
command | grep pattern
这里,command
是生成输出的命令,pattern
是要搜索的模式,|
是管道符,可以将两个命令分隔开,|
左边命令的输出就会作为 |
右边命令的输入
常用实例
现在我们在 /home/tian777
目录下,有一个名为 readme.txt
的文件,像搜索里面包含关键字 "beike" 的行,那么可以使用以下命令:
cd /home/tian777
grep "beike" readme.txt
或者搜索目录下含关键字的文件
grep -ir "beike" /home/tian777
常用选项参数
-i
:(ignore)忽略大小写进行匹配。-n
:(number)显示匹配行的行号。-v
:(reverse)反向匹配,打印不包含模式的行。-r
:(recursive)递归搜索指定目录及其子目录下的文件。
grep -n beike readme.txt
1、比如在读取 show.txt
的时候搜索 goodbook
:
cat show.txt | grep goodbook
2、借助标准输入流快速定位错误
tail -2000f project-test.log | grep -i error
3、统计字段出现的次数。
grep -o [pattern] [finename...] | wc -l
选项 -o 只显示匹配的字符串,并以单独行输出。
wc -l
统计输入的行数。就可以知道这个要统计的字段出现的次数了。
假如有一个文件 book.txt
内容如下:
Hi my name is Bob.
如果想统计字母 m 出现的次数,那么用下面的命令可以实现。
grep -o "m" book.txt | wc -l
4、打印在 aa,bb,cc 文件中匹配 test 的行,并显示行号。
grep -n 'test' aa bb cc
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· winform 绘制太阳,地球,月球 运作规律
· AI与.NET技术实操系列(五):向量存储与相似性搜索在 .NET 中的实现
· 超详细:普通电脑也行Windows部署deepseek R1训练数据并当服务器共享给他人
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 上周热点回顾(3.3-3.9)