1.命令简介

grep(Globally search a Regular Expression and Print)是 GNU 开发的一款免费开源的文本搜索工具。

grep 家族包括 grep、egrep 和 fgrep,其功能是在给定的文件中查找一个指定格式或者内容的字符串,并将匹配的字符串所在行打印出来。如果不指定任何文件名称或给定的文件名为连字符 -,则从标准输入设备读取文本,然后在这些文本中进行查找。grep 支持正则表达式表示待搜索的文本,完成文本匹配。

2.命令格式

grep [OPTION...] PATTERNS [FILE...]
grep [OPTION...] -e PATTERNS ... [FILE...]
grep [OPTION...] -f PATTERN_FILE ... [FILE...]

3.选项说明

注意,长选项的参数对于短选项也是必须的。

匹配器选择:
-E,--extended-regexp使用扩展正则表达式解释匹配模式
-F, --fixed-strings将匹配模式看作固定字符串而不是正则表达式
-G, --basic-regexp使用基本正则表达式解释匹配模式匹配控制:
-e, --regexp=PATTERNS匹配模式。如果使用此选项多次或与 -f(--file)选项组合使用,搜索给定的所有模式。此选项可用于保护以 “-” 开头的模式
-f, --file=FILE将匹配模式写在文件中,文件中一行内容对应一个匹配模式
-i, --ignore-case忽略字符大小写
-v, --invert-match反向选择,显示不包含匹配文本的所有行
-w, --word-regexp整个单词匹配才算匹配
-x, --line-regexp整行匹配才算匹配
-y过时的 -i 同义词一般输出控制:
-c, --count只输出匹配的行数,不是匹配字符串的个数
--color, --colour[=WHEN]将找到的关键词加上颜色显示。WHEN 可取值 never、always 或 auto
-L, --files-without-match不输出包含匹配模式文件的文件名
-l, --files-with-matches只输出包含匹配模式文件的文件名
-o, --only-matching只显示匹配的字符串,并以单独行输出
-q, --quiet, --silent静默模式,不显示任何信息到标准输出
-s, --no-messages不显示不存在或无匹配文本的错误信息输出行前缀控制:
-b, --byte-offset在匹配的行之前,标示出该行第一个字符的位编号,即字符在文本中的字节偏移下标,包括换行符
-H, --with-filename查询多文件时显示文件名(默认选项)
-h, --no-filename查询多文件时不显示文件名
-n, --line-number显示匹配行及行号
-T, --initial-tab使用 Tab 使匹配行对齐
-u, --unix-byte-offsets以 Unix 样式进行字节偏移。使用该选项,使 grep 产生的结果与在 Unix 机器上相同,此选项必须与 -b 同时使用,否则没有效果,也必须要在 MS-DOS 和 MS-Windows 平台上使用
-Z, --null文件名与匹配行之间使用空字符。grep 默认会在每个输出前打印文件名,文件名与匹配行之间会有一个冒号隔开,-Z选项告诉grep不要使用冒号了,使用一个NUL字符上下行控制:
-A, --after-context=NUM后紧跟数字,为 after 之意。除了列出匹配字符串所在行之外,后续的 NUM 行也列出来
-B, --before-context=NUM后紧跟数字,为 before 之意,显示匹配行以及该行之前指定行数的内容
-, -C, --context=NUM显示匹配行以及该行上下指定行数的内容文件与目录选择:
-a, --text将 binary 文件以 text 文件的方式处理,等同于 --binary-files=text 选项
-D, --devices=ACTION如果输入文件是设备,命名管道(FIFO)或套接字,则使用指定动作处理它。默认情况下,为读取操作(read),这意味着读取设备就像它们是普通文件。如果操作是跳过(skip),设备将被悄悄跳过
-d, --directories=ACTION当指定要查找的是目录而非文件时,使用指定的操作处理。动作有:read(默认)像普通文件一样读取目录;skip:忽略指定目录;recurse:递归读取指定目录下的所有文件,此操作等同于-r选项。
-I忽略二进制文件。等同于 --binary-files=without-match
-R, -r, --recursive递归搜索给定目录下的所有文件。等价于 -d recurse通用程序信息:
--help显示帮助信息并退出
-V, --version显示版本信息并退出

4.常用示例

(1)统计字段出现次数。

grep -o [pattern] [finename...]|wc -l

命令解释:
grep -o 中的选项 -o 是 only-matching 缩写。Print only the matched(non-empty) parts of a matching line, with each such part on a separate output line。以单独的行输出匹配的每一个模式字符串。

wc -l 统计输入的行数。就可以知道这个要统计的字段出现的次数了。

(c)搜索指定范围的数字。比如查询包含540-600的行。

grep '5[4-9][0-9]\|600' [filename...]

之所以竖杠 | 需要加上反斜杠进行转义,是因为竖杠 | 在 Shell 中是特殊字符,表示管道命令。可以使用 -E 选项显示指明为正则表达式,那么就不需要对竖杠 | 进行转义。

(2)递归搜索当前目录下的所有文件。

grep -r "lvlv" .

(3)显示所有以d开头的文件中包含test的行。

grep 'test' d*

(4)打印在aa,bb,cc文件中匹配test的行,并显式行号。

grep -n 'test' aa bb cc

(5)打印aa中包含有至少5个连续小写字符的字符串的所有行

grep '[a-z]\{5\}' aa

注意,这里必须使用双引号或者单引号将查找pattern包围。单引号与双引号的区别主要有:
(1)单引号’‘是全引用,被单引号括起的内容不管是常量还是变量都不会发生替换;
(2)双引号""是部分引用,被双引号括起的内容常量还是常量,变量则会发生替换,替换成变量的内容。一般常量用单引号’'括起,如果含有变量则用双引号""括起来。但是也有意外,比如说查找特殊字符反斜杠\使用:grep '\' ./*则会报grep: Trailing backslash错误,需要使用grep '\\' ./*才可以。

(6)统计文件file中含有指定字符串aaa的的行数。

grep aaa file | wc -l

注意: grep可用于shell脚本,因为grep通过返回一个状态值来说明搜索的状态,如果模板搜索成功,则返回0,如果搜索不成功,则返回1,如果搜索的文件不存在,则返回2。我们利用这些返回值就可进行一些自动化的文本处理工作。

(6)grep使用多个条件的或查询。

#方法一:使用符号\|
grep "pattern1\|pattern2" filename#方法二:使用-E选项,用扩展正则表达式解释匹配模式
grep -E "pattern1|pattern2" filename#方法三:使用-e选项指定多个匹配模式
grep -e "pattern1" -e "pattern2" filename

(7)grep 使用多个条件的与查询。

# 使用管道命令
grep "pattern1"  filename | grep "pattern2"

参考文献

grep(1) manual
Linux知其然且知所以然之grep命令

Linux 命令(32)—— grep 命令相关推荐

  1. Linux中利用grep命令如何检索文件内容详解

    前言 Linux系统中搜索.查找文件中的内容,一般最常用的是grep命令,另外还有egrep命令,同时vi命令也支持文件内容检索.下面来一起看看Linux利用grep命令检索文件内容的详细介绍. 方法 ...

  2. Linux下的grep命令

    Linux下的grep命令 作用:grep 指令用于查找内容包含指定的范本样式的文件,如果发现某文件的内容符合所指定的范本样式,预设 grep 指令会把含有范本样式的那一列显示出来.若不指定任何文件名 ...

  3. linux命令之grep 命令

    Linux系统中grep命令是一种强大的文本搜索工具,它能使用正则表达式搜索文本,并把匹 配的行打印出来.grep全称是Global Regular Expression Print,表示全局正则表达 ...

  4. linux使用grep查找文件内容,Linux中使用grep命令搜索文件名及文件内容的方法

    这篇文章主要介绍了Linux中使用grep命令搜索文件名及文件内容的方法,同时文中还介绍了将匹配结果高亮显示的方法,相当实用,需要的朋友可以参考下 从文件中搜索并显示文件名 当从多个文件中搜索时,默认 ...

  5. linux下grep同时匹配多个单词,Linux下使用grep命令搜索多个单词的方法

    摘要 腾兴网为您分享:Linux下使用grep命令搜索多个单词的方法,篆刻字典,中国知网,虚拟机,微博等软件知识,以及掌上公交app,尚书ocr,汇博企业,强密码,支付宝,mh,海融易,我的世界火影忍 ...

  6. Unix/Linux 中的 grep 命令

    Unix/Linux 中的 grep 命令参数及示例用法 作用 语法 主要参数 示例命令 作用 Grep 筛选器在文件中搜索特定的字符模式,并显示包含该模式的所有行.在文件中搜索的模式称为 正则表达式 ...

  7. Linux下的grep命令详解

    grep命令 使用grep命令可以查找文件内符合条件的字符串. 命令语法: grep [选项] [查找模式][文件] 命令中各选项的含义如表所示. 表                          ...

  8. Linux命令之grep命令

    一.命令介绍   grep命令是文本搜索命令,它可以正则表达式搜索文本,也可从一个文件中的内容作为搜索关键字.grep的工作方式是这样的,它在一个或多个文件中搜索字符串模板.如果模板包括空格,则必须被 ...

  9. 【Linux】使用grep命令查找文件内容

    文章目录 grep简介 grep语法 grep常用选项 示例 模式匹配 grep命令使用简单实例 grep命令使用复杂实例 cat/more/tail 与 grep组合使用 grep简介 grep是l ...

  10. Linux三剑客之grep命令详解及相关实例

    grep (global search regular expression(RE) and print out the line,全面搜索正则表达式并把行打印出来)是一种强大的文本搜索工具,它能使用 ...

最新文章

  1. 学会这两样高级用户,让你成为 Git老手
  2. 采购计算机的,如何采购计算机
  3. python 日志封装
  4. ZOJ3531: [SDOI2014] 旅行
  5. VC++套接字、数据库、文件读写综合应用-客户端读取文件套接字接收服务端写入数据库
  6. spyder编辑器报ModuleNotFoundError: No module named ‘pymongo‘,明明已经安装上了pymongo扩展
  7. java 正则表达式语法_Java 正则表达式基础语法
  8. 中心极限定理_中心极限定理的的原理与应用
  9. Atitit img hot click link 图像背景拉伸100%Map area trouble..So body backgrd img mode...is easy...No
  10. openai-gpt_为什么GPT-3感觉像是编程
  11. 【bootcamp问答系统部署】
  12. 360奇酷手机线刷教程
  13. 手持式以太网测试仪RFC2544测试演示
  14. MD5简介与代码实现
  15. oracle同义词不再有效,ORA-00980: 同义词转换不再有效
  16. 监控视频平台LiveNVR如何给摄像头视频添加文字水印和图片水印
  17. 数据结构——什么是数据结构?
  18. Hark的数据结构与算法练习之归并排序
  19. python将excel导入生成矩阵
  20. 人工智能七大应用领域!你难道还没真香吗?

热门文章

  1. HTML5设计基本网页-basic frameset
  2. 一起看2018阿里技术参考图册(算法篇)
  3. 『总结』CSS/CSS3常用样式与web移动端资源
  4. PenMount Touch显示鼠标指针驱动安装
  5. C# for循环①护栏长度 ②广场砖面积 ③判断闰年平年
  6. 路由器升级须注意,升级导致功能失灵无法使用无线功能
  7. 性能优化 - 之一 (C/C++)
  8. flask html缓存,flask_cache如何缓存动态数据,如何调用缓存数据
  9. 蓝桥杯 ALGO-158 算法训练 sign函数
  10. [Python] L1-023. 输出GPLT-PAT团体程序设计天梯赛GPLT