grep, egrep, fgrep

grep: 根据模式搜索文本,并将符合模式的文本行显示出来。

总结内容:

1、grep常用参数

2、grep正则表达式元字符集(基本用法)及高级用法

3、与正则相关的POSIX特殊字符类

语法:grep [options]PATTERN [FILE...]

grep中常用的几个参数:

-r  递归匹配

-E  高级扩展功能与egrep功能相似

-i  忽略大小写差别

-v  反向匹配,只显示不匹配的行

-w 如果被\<和\>引用,就把表达式做为一个单词搜索(单词匹配)

如:netstat -ntlp |grep"\<80\>"

grep -w'main' /usr/include/*.h

-n  显示匹配行及行号

-l   用于多文件查找,查询多文件时只输出包含匹配字符的文件名

grep -l -r -i -w 'filename_max' /usr/include/*.h

--color  高亮显示匹配

-c  只打印匹配的行数,不显示匹配的内容

-o:只显示被模式匹配到的字符串

grep正则表达式元字符集(基本用法)

匹配次数(贪婪模式):
. 匹配一个非换行符的字符 如:'gr.p'匹配gr后接一个任意字符,然后是p。
* 匹配零个或多个先前字符 如:'*grep'匹配所有一个或多个空格后紧跟grep的行。

.* 一起用来表示任意字符。
\?  匹配其前面的字符1次或0次。

x\{m\} 连续重复字符x,m次,如:'o\{5\}'匹配包含连续5个o的行。
x\{m,\} 连续重复字符x,至少m次,如:'o\{5,\}'匹配至少连续有5个o的行。
x\{m,n\} 连续重复字符x,至少m次,不多于n次,如:'o\{5,10\}'匹配连续5--10个o的行。

元字符:
[] 匹配一个指定范围内的字符,如'[Gg]rep'匹配Grep和grep。
[^] 匹配一个不在指定范围内的字符,如:'[^A-FH-Z]rep'匹配不包含A-R和T-Z的一个字母开头,紧跟rep的行。

位置锚定:

^: 锚定行首,此字符后面的任意内容必须出现在行首

$: 锚定行尾,此字符前面的任意内容必须出现在行尾
\<或\b  锚定单词的开始,如:'\<grep'匹配包含以grep开头的单词的行。
\>或\b  锚定单词的结束,如'grep\>'匹配包含以grep结尾的单词的行。

分组:

\(\)

\(ab\)*

后向引用

\1: 引用第一个左括号以及与之对应的右括号所包括的所有内容

\2:

\3:

\w 匹配一个文字和数字字符,也就是[A-Za-z0-9],如:'G\w*p'匹配以G后跟零个或多个文字或数字字符,然后是p。
\W w的反置形式,匹配一个非单词字符,如点号句号等。\W*则可匹配多个。
\b 单词锁定符,如: '\bgrep\b'只匹配grep,即只能是grep这个单词,两边均为空格。

多个关键字查找

1.1 使用-e

grep -e 'stdio\.h' -e 'stdlib\.h' /usr/include/*.h

1.2 使用-f file

将关键字以行方式保存在一个文件中

1.3 使用元字符 \|

grep 'stdio\.h\|stdlib.h' /usr/include/*.h

关于egrep和grep -E的高级用法:

+  匹配一个或多个先前的字符。如:'[a-z]+able',匹配一个或多个小写字母后跟able的串,如loveable,enable,disable等。  

?  匹配零个或多个先前的字符。如:'gr?p'匹配gr后跟一个或没有字符,然后是p的行。  a|b|c  匹配a或b或c。如:grep|sed匹配grep或sed   

() 分组符号,如:love(able|rs)ov+匹配loveable或lovers,匹配一个或多个ov。  x,x{m,},x{m,n}   作用同x\{m\},x\{m,\},x\{m,n\}

POSIX特殊字符类:可以通过 man 7 glob查看。。。

[:alpha:]   文字字符   [A-Za-z]

[:digit:]   数字字符   [0-9]

[:graph:]   非空字符(非空格、控制字符)

[:lower:]   小写字符  [a-z]

[:upper:]   大写字符  [A-Z]

[:alnum:]   [0-9a-zA-Z]

[:cntrl:]   控制字符 

[:print:]   非空字符(包括空格)

[:punct:]   标点符号

[:space:]   所有空白字符(新行,空格,制表符),制表符还可以用\t表示

[:xdigit:]   十六进制数字和字母(0-9,a-f,A-F)

我们在用时要这样用:[[:alpha:]],如果取反就是[^[:digit:]]

+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

正则表达式:

Basic REGEXP:基本

Extended REGEXP:扩展

PS: 这里不再做详细说明!!!!!!!!!

基本正则表达式:

.:

[]:

[^]:

次数匹配:

*:

\?: 0或1次

\{m,n\}:至少m次,至多n次;

.*:

锚定:

^:

$:

\<, \b:

\>, \b:

反向引用

\(\)

\1, \2, \3, ...

grep:使用基本正则表达式定义的模式来过滤文本的命令;

-i

-v

-o

--color

-E: 使用扩展正则表达式

-A #:

-B #:

-C #:

扩展正则表达式:

字符匹配:

.

[]

[^]

次数匹配:

*:

?:

+: 匹配其前面的字符至少1次

{m,n}

位置锚定:

^

$

\<

\>

分组:

():分组

\1, \2, \3, ...

或者

|: or

C|cat: Cat或cat, C或cat

转载于:https://blog.51cto.com/opsmysql/1203128

【APP】Linux运维利器--Grep命令及正则表达式相关推荐

  1. strace跟踪java,linux运维利器—–strace命令

    strace常用来跟踪进程执行时的系统调用和所接收的信号. 在Linux世界,进程不能直接访问硬件设备,当进程需要访问硬件设备(比如读取磁盘文件,接收网络数据等等)时,必须由用户态模式切换至内核态模式 ...

  2. 97 条 Linux 运维工程师常用命令总结

    97 条 Linux 运维工程师常用命令总结 1.ls [选项] [目录名 | 列出相关目录下的所有目录和文件 -a 列出包括.a开头的隐藏文件的所有文件-A 通-a,但不列出"." ...

  3. linux运维排查常用命令(开发专享)

    cd: 进入到某个目录下 cd hikvision ll:详细展示该目录下有的文件 ll su 用户名:切换用户名 例子: su root 根据字符串在文件中查找信息:Grep –a –i 字符串 文 ...

  4. 【APP】取代top工具的Linux运维利器--htop

    htop是一款运行于Linux系统监控与进程管理软件,用于取代Linux/Unix下传统的top,htop用C语言编写,采用了ncurses库,因此使用有此功能需要安装ncurses. 与top相比有 ...

  5. Linux运维入门快捷命令设置说明大全

    文章目录 一.目录结构说明 二.重要目录数据信息说明 三.etc目录下重要的数据文件 四.usr目录下重要的数据文件 五.var目录下重要的数据文件 六.proc目录下重要的数据文件 七.系统优化相关 ...

  6. 网易云课堂Linux运维在线班命令笔记

    #################################### ###在线班-命令记录 ############ #################################### 1 ...

  7. Linux运维之常见命令

    文件管理类命令 :cp : 复制cp SRC DEST如果DEST不存在,系统会自动创建文件或目录如果DEST存在 :如果SRC是一个文件 : 如果DEST是一个文件,会直接将SRC中的内容覆盖DES ...

  8. Linux运维:ulimit命令修改打开文件的句柄数

    文章目录 ulimit命令语法 参数说明: 查看本机设置的参数: ulimit修改打开文件的句柄数 场景 解释: 修改 1.修改file-max 2.修改ulimit的open file 注意事项 d ...

  9. Linux运维之top命令解析

    0 背景 在 linux 系统上开发的时候,经常要用到 top 命令来对进程以及资源进行监控,本文对该命令的输出以及使用方法做一个介绍. 1 输出解析 如下图所示为在我的系统中运行 top 指令后输出 ...

最新文章

  1. Java面试题库,mysql远程访问权限设置
  2. recyclerview item动画_RecyclerView 的 Item 酷炫动画,效果加案例讲解!
  3. android开发--翻转闹铃(从制作到打包)
  4. android工程jrr版本怎么改,ionic3 生成android 如何控制versionCode版本号
  5. java 找不到符号 con_我的java程序运行时,提示找不到符号,求解!
  6. 怎样能确保计算机安全,如何确保电脑安全
  7. 错过SaaS,就是错过这个时代
  8. jenkins的svn路径中文问题
  9. gels imagej 图片处理_如何用ImageJ分析运动细胞?
  10. 详解MessageBox(),MsgBox函数的正确使用
  11. python爬取豆瓣电影影评_Python3爬虫实战:以爬取豆瓣电影为例
  12. java isprime函数_Java8函数式编程入门
  13. QQ空间照片回收站在哪里,QQ隐藏的一些功能
  14. 老徐小程序官方教程地址
  15. 中英文常用标点符号统一清洗为英文格式
  16. 聊一聊Java中的线程中断
  17. 用MATLAB绘制两个圆相切,教您用几何绘图工具画三个两两相切的圆
  18. iPad莫名其妙黑屏了,无法打开屏幕?
  19. HTML5期末大作业:个人介绍/个人主页/网页设计——个人博客 (11页) HTML+CSS+JavaScript
  20. SOC的定义、适用性和组成

热门文章

  1. 若依框架集成redis缓存
  2. [Ext JS 4] 实战之Chart, Column Chart 定制颜色
  3. python 图像的拉普拉斯变换中的数值问题_数字图像处理(第十章)
  4. 加号和减号在一起怎么读_在家摄影怎么玩?拍摄小黄米场景搭建,摄影软件和修图软件介绍...
  5. java格式化时间博客园_Java 日期格式化工具类
  6. chm帮助文档编辑_零成本轻松制作帮助文档方法分享
  7. Spring Cloud 设置Feign的日志记录级别
  8. java 令牌解析_Java JWT的令牌机制
  9. 苹果7支持快充吗_iPhone12的磁吸无线充到底怎么回事?是否支持苹果20W快充?
  10. LINUX 下 RABBITMQ安装与配置