1. grep简介
grep是Linux中用来过滤文本文件内容的命令,使用该命令能够高效的从文本信息中过滤出符合条件的文件行。
grep 与 awk 、sed并称为linux下文本处理三剑客,grep用于过滤文本信息,sed用于动态编辑文本,awk用于格式化输出文本。
2. 命令格式
第一种用法:从已存在文件中过滤并输出文本信息
grep [选项] [表达式] [文件路径]...
第二种用法:过滤管道中获取到的文本信息
otherCommand | grep [选项] [表达式]
3. 可用选项
选项 | 含义 |
---|---|
-v | 反向过滤,不展示过滤项信息 |
-i | 过滤时忽略大小写 |
-n | 显示行号(显示的是文本中的行号) |
-r | 递归搜索,传递文件路径是文件夹时,递归处理下面所有符合条件的所有文本 |
-E | 支持扩展后的正则表达式,加上 -E参数后,实际等同于egrep命令 |
-F | 不按正则表达式进行匹配,按照字符串字面进行匹配 |
-c | 只展示匹配到的总行数 |
-w | 匹配整词,词语间以空格划分 |
-x | 匹配整行,行之间以换行符划分 |
-l | 只显示匹配到的文件名称,不显示内容 |
-s | 不显示错误信息 |
4. 场景实操
# 过滤tmpfile1、tmpfile2中包含login字符的行
grep login tmpfile1 tmpfile2
# 过滤tmpfile开头的文件中,包含login字符(忽略大小写)的行
grep -i login tmpfile*
# 过滤出以log结尾的文件中,不包含debug字符的行,反向过滤
grep -v debug *.log
# 过滤出以log结尾的文件中,包含login字符(忽略大小写)的行,并打印出行号
grep -i -n login *.log
# 扩展正则表达式的支持,同时匹配 login、debug两个关键字,不加-E的话,不支持扩展表达式
grep -E 'login|debug' *.log
# 非正则表达式匹配,过滤出以log结尾的文件中,包含 debug.* 字符的行
grep -F 'debug.*' *.log
# 过滤 /log下文件中所有文件中包含 error的行
grep -r 'error' /log/
# 只输出以log结尾的文件中,包含error字符的行数
grep -c error *.log
# 匹配log结尾的文件中,包含login单词的行,login匹配到,不匹配loginInfo等
grep -w login *.log
# 匹配log结尾的文件中,等于love的行,整行匹配
grep -x love *.log
# 实时打印以log结尾的日志文件,过滤包含关键词error的行
tail -f *.log | grep error
网友评论