传说中的Linux三剑客命令之grep(三剑客老幺)别人只知道了而我却做到了

grep(三剑客老幺)

1.介绍

Given one or more patterns, grep searches input files for matches to the patterns. When it finds a match in a line, it copies the line to standard output (by default), or produces whatever other sort of output you have requested with options.
Though grep expects to do the matching on text, it has no limits on input line length other than available memory, and it can match arbitrary characters within a line. If the final byte of an input file is not a newline, grep silently supplies one. Since newline is also a separator for the list of patterns, there is no way to match newline characters in a text.

给定一个或多个模式,grep在输入文件中搜索与模式匹配的内容。当它在一行中找到匹配项时,它将该行复制到标准输出(默认情况下),或者使用选项生成您请求的任何其他类型的输出。
尽管grep希望在文本上进行匹配,但是除了可用内存之外,它对输入行长度没有限制,并且它可以匹配一行中的任意字符。如果输入文件的最后一个字节不是换行符,grep会自动提供一个。由于换行符也是模式列表的分隔符,因此无法在文本中匹配换行符。(来自百度翻译)

2.如何工作

grep 命令在一个或多个文件中查找某个字符模式。如果这个模式中包含空格,就必须 用引号把它括起来。grep 命令中,模式可以是一个被引号括括起来的字符串,也可以是单 个词,位于模式之后所有的单词都被视为文件名。grep 将输出发送到屏幕,它不会对输入文件进行任何修改或变化。

3.正则表达式

元字符 功能 示例 示例匹配的对象
^ 行首定位符 /^root/ 匹配所有以root开头的行
$ 行尾定位符 /root$/ 匹配所有以root结尾的行
. 匹配除换行外的单个字符 /r…t/ 匹配字母r,然后两个任意字符,再以t结尾的行,比如root,rout等
* 匹配0个或多个前导字符(包括回车) /r*oot/ 匹配0个或多个r之后紧跟着oot的行,比如oot,rrroot等
[] 匹配指定字符组内任意字符 /[LI]oot/ 匹配包含root和Root的行
[^] 匹配不在指定字符组内的任意一个字符 /[^A-KM-Z]oot/ 匹配包含oot,但oot之前的那个字符不在A至K或M至Z间的行
\(…\) 保存已匹配的行
& 保存查找串以便在替换串中引用 s/root/**&**/ 符号&代表查找串,字符串root将替换前后各加了练个**的引用,即root变成**root**
\< 词首定位符 /\<root/ 匹配包含以root结尾的单词的行
\> 词尾定位符 /root\>/ 匹配包含以root结尾的单词的行
x{m\} 连续m个x /o\{5\}/ 匹配出现连续5个字母o行
x{m,\} 至少m个x /o\{5,\}/ 匹配至少出现连续5个字母o行
x{m,n\} 至少m个x,但不超过n个x /o\{5,10\}/ 匹配出现5至10个字母o行

4.选项

选项 功能
-E 如果加这个选项,那么后面的匹配模式就是扩展的正则表达式,也就是 grep -E = egrep
-i 比较字符时忽略大小写区别
-w 把表达式作为词来查找,相当于正则中的"<…>"(…表示你自定义的规则)
-x 被匹配到的内容,正好是整个行,相当于正则"^…$"
-v 取反,也就是输出我们定义模式相反的内容
-c count.统计,统计匹配结果的行数,主要不是匹配结果的次数,是行数。
-m 只匹配规定的行数,之后的内容就不在匹配了
-n 在输出的结果里显示行号,这里要清楚的是这里所谓的行号是该行内容在原 文件中的行号,而不是在输出结果中行号
-o 只显示匹配内容,grep 默认是显示满足匹配条件的一行,加上这个参数就只 显示匹配结果,比如我们要匹配一个 ip 地址,就只需要结果,而不需要该行 的内容。
-R 递归匹配。如果要在一个目录中多个文件或目录匹配内容,则需要这个参数
-B 输出满足条件行的前几行,比如 grep -B 3 “aa” file 表示在 file 中输出有 aa 的 行,同时还要输出 aa 的前 3 行
-A 这个与-B 类似,输出满足条件行的后几行
-C 这个相当于同时用-B -A,也就是前后都输出

5.egrep扩展

元字符 功能 示例 示例匹配的对象
^ 行首定位符 /^root/ 匹配所有以root开头的行
$ 行尾定位符 /root$/ 匹配所有以root结尾的行
. 匹配除换行外的单个字符 /r…t/ 匹配字母r,然后两个任意字符,再以t结尾的行,比如root,rout等
* 匹配0个或多个前导字符(包括回车) /r*oot/ 匹配0个或多个r之后紧跟着oot的行,比如oot,rrroot等
[] 匹配指定字符组内任意字符 /[LI]oot/ 匹配包含root和Root的行
[^] 匹配不在指定字符组内的任意一个字符 /[^A-KM-Z]oot/ 匹配包含oot,但oot之前的那个字符不在A至K或M至Z间的行
+ 匹配一个或多个 加号前面的字符 ‘[a-z]+oot’ 匹配一个或多个小写字母后跟oot的字符串。
? 匹配0个或一个前导字符 ‘ro?ot’ 匹配r后跟一个或0个字母o以及ot的字符串。
a|b 匹配a或b ‘root|ruut’ 匹配root和ruut这两个表达 式之一
() 字符组 ‘root(login|exit)(oo+)’ 匹配rootlogin或rootexit匹配oo的一次或多次出现

6.说明

grep 不支持“|”这个,egrep 支持“|”。“|”为管道符。
以上内容来源。1


  1. 参考《跟老男孩学Linux三剑客命令V1》第三章 Grep讲解 ↩︎

传说中的Linux三剑客命令之grep(三剑客老幺)别人只知道了而我却做到了相关推荐

  1. linux 基础命令测试题,grep命令基础练习题

    常用的grep选项是: -c 只输出匹配行的计数. -i 不区分大小写(只适用于单字符). -h 查询多文件时不显示文件名. -l 查询多文件时只输出包含匹配字符的文件名. -n 显示匹配行及行号. ...

  2. Linux管线命令 - cut,grep,sort,uniq,wc,tee,tr,col,join,paste,expand,split,xargs

    在每个管线后面接的第一个数据必定是『命令』喔!而且这个命令必须要能够接受 standard input 的数据才行,这样的命令才可以是为『管线命令』,例如 less, more, head, tail ...

  3. 【Linux常用命令】grep命令

    参数说明: [root@~]# grep [-action] [--color=auto] '搜寻字符串' filename 选项与参数: -a :讲binary文件以 text文件的方式搜寻数据 - ...

  4. linux su命令在哪里,Linux su命令

    本人以前一直习惯直接使用root,很少使用su,前几天才发现su与su -命令是有着本质区别的! 大部分Linux发行版的默认账户是普通用户,而更改系统文件或者执行某些命令,需要root身份才能进行, ...

  5. linux paste变量,Linux paste命令

    Linux paste命令用于合并文件的列. paste指令会把每个文件以列对列的方式,一列列地加以合并. 语法 paste [-s][-d ][--help][--version][文件...] 参 ...

  6. 编程实现linux中的who命令功能,Linux who命令简介及使用方法详解

    玩蛇网推荐图文教程:python 列表 本文是关于Linux who命令简介及使用方法详解一文.如果你是一名系统管理员,可能需要需要在一个特定的时间点都有谁活跃在系统上.以便必须严密监视我们的服务器. ...

  7. Linux三剑客命令详解(grep sed awk )

    下面所说的是Linux中最重要的三个命令在业界被称为"三剑客",它们是awk,sed,grep. 我们现在知道Linux下一切皆文件,对Linux的操作就是对文件的处理,那么怎么能 ...

  8. linux 三剑客命令(grep,sed ,awk)

    grep 命令 :强大的文本'搜索'工具 1.grep -n 'word' file_name 在file_name文件中找到word所在的所有行并显示.-n 为显示行号. 2.grep 'w[ea] ...

  9. linux日志查看面试题,Linux 运维面试题 三剑客(sed awk grep)整理

    一. 三剑客-基础部分题目 1. 选择 1.在给定文件中查找与条件相符字符串的命令及查找某个目录下相应文件的命令为:(多选)(AC)A:grep B:gzip C:find D:sort 2.在给定文 ...

最新文章

  1. anaconda虚拟环境教程大全
  2. 6_2 铁轨(UVa514)栈
  3. 【BIM入门实战】Revit 2018墙体绘制—别墅地下室
  4. 这相册一出手,哪个长辈搞不定?
  5. MATLAB离散傅里叶变换实验结果分析,Matlab离散傅里叶变换实验报告
  6. Scala快速入门到精通 视频教程 百度云网盘下载地址
  7. Arora is a lightweight cross-platform web browser.
  8. 服务器软硬件安装和配置,Windows Server 2016-系统安装软硬件要求
  9. macos 10.15 软件损坏/无法验证开发者
  10. Github创建、删除organization
  11. 【学习笔记】数据结构之单链表(先进先出、先进后出)
  12. 微信小程序免费http转https
  13. 传华硕将在6月3日闪现EBox台式电脑
  14. 解决 WARNING: Published ports are discarded when using host network mode 问题
  15. nth-of-type和nth-child区别
  16. 解决PowerBuilder错误:unable to load the requested database interface please
  17. EMQX 入门教程——导读
  18. 【西瓜书】4-决策树
  19. 安卓桌面壁纸_小米全新MIUI 12正式发布,惊艳而强大 堪称安卓最美系统
  20. 2010、2011年中国融资、IPO、并购事件

热门文章

  1. 转型之路:从数字化到数智化〡数智洞察
  2. Python数据分析与可视化概述
  3. 在线的图片颗粒化效果实现
  4. 考研路茫茫——早起看书
  5. 三分搜索--hdu2241 考研路茫茫——早起看书
  6. RFID打印机和条码打印机的4大区别
  7. RDS数据库空间满了怎么办?
  8. 安防市场视频监控比重大 并有新商机
  9. [转载][shell]linux常用入门命令
  10. 【建议珍藏】2023年最新Android大厂面经分析,最终入职得物