我的学习记录--grep , egrep

概念:

grep (Globally search a Regular Expression and Print)是一种强大的文本搜索工具,它能使用正则表达式搜索文本,并把匹配的行打印出来。

grep:传统的grep程序,支持基本正则表达式

egrep:扩展的grep程序,支持扩展正则表达式

正则表达式:简单来说就是,用一串自己定义的条件字符串,去匹配检索文档中符合条件的字符。

grep基本格式:

grep [OPTIONS] PATTERN [FILE...]

常用选项:

-o:只显示被模式匹配到的内容

-i:(ignore case) 搜索时不区分字符大小写

-v:显示不能够被模式匹配到的行

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

-A #:显示被模式匹配到的行以及下#行

-B #:显示被模式匹配到的行以及上#行

-C #:显示被模式匹配到的上下#行

--color[=WHEN], --colour[=WHEN] :

用于设置匹配到的字符,显示高亮颜色否,有三个选项 auto ,always ,never

例如:

基本正则表达式元字符:

字符匹配:

. :匹配任意单个字符

[]:指定范围内的任意单个字符

[^]:指定范围外的任意单个字符

次数匹配:在期望匹配字符后面提供一个控制符,用于表达匹配其前面字符指定的次数

* :任意长度,表示0次,1次或多次;

.*:任意长度的任意字符(工作于贪婪模式,尽可能长的进行匹配)

\?:匹配其前的字符0次或1次,表示其左侧字符可有可无

\+:匹配其前面的字符1次或多次,表示其左侧字符至少出现一次

\{m\}:精确匹配其左侧字符出现m次

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

\{0,n\}:至多n次

\{m,\}:至少m次

位置锚定:

^:锚定行首,形如:^PATTERN

$:锚定行尾,形如:PATTERN$

^PATTERN$:用模式来匹配整行

例如:

grep "^$"  匹配空白字符的行(有空格的行不能匹配)

grep "^[[:space:]]*$"  匹配所有空行(可以有空格)

grep "^sh.*sh$" /etc/passwd  匹配/etc/passwd文件中以sh开始,sh结尾的整行

单词锚定:由非特殊字符组成的连续的字符串

\<:锚定词首 也可用\b,形如:\<PATTERN  \bPATTERN

例如:grep "\<sh" /etc/passwd  匹配/etc/passwd文件中以“sh”开头的单词

\>:锚定词尾,也可以用\b,形如:PATTERN\>  PATTERN\b

\<PATTERN\>:匹配PATTERN能匹配的整个单词

分组匹配:

\(PATTERN\)

注意:分组中的模式,在某次的具体匹配过程中所匹配到的字符,可以被grep记忆(保存于内置    的变量中,这些变量时\1,\2,...),因此,还可以被引用

\1:引用,模式中左到右,由第一个左括号以及与之对应的右括号中的模式所匹配到的内容

\2:引用,模式自左而右,由第二个左括号以及与之对应的右括号中的模式所匹配到的内容

例如:

grep "\(a.b\).*\1" FILE.. 用于匹配文件行中出现了"a.b",且后面再次出现了前方“a.b”匹配到的相同字符串

如图:

amb hello amb 匹配

amb hello anb 不匹配 \1匹配的是前面匹配到的内容amb,而非\(a.b\)模式

扩展的正则表达式元字符:(无特殊说明则用法和基本正则表达式相同)

字符匹配:

. :匹配任意单个字符

[]:指定范围内的任意单个字符

[^]:指定范围外的任意单个字符

次数匹配:

*:任意次

?:0或1次

+:至少1次

{m}:精确匹配m次

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

{m,}:至少m次

{0,n}:至多n次

位置锚定:

^:行首

$:行尾

\<,\b:词首

\>,\b:词尾

^$:空白行

分组:

(PATTERN):引用\1,\2,...

或者:(两侧的所有内容)

a|b :a或者b

abc|CBA: abc或者CBA

egrep(grep -E)命令:(基本和grep一样)

grep -E PATTERN FILE...

egrep PATTERN FILE...

练习:

1.显示/proc/meminfo文件中以大写或小写S开头的行;

# grep -i "^s" /proc/meminfo --color=auto 或;

# grep "^[sS]" /proc/meminfo --color=auto

用扩展正则表达式书写:

# egrep -i "^s" /proc/meminfo --color=auto

2.显示/etc/passwd文件中其默认shell为非/sbin/nologin的用户

# grep -v "nologin$" /etc/passwd    ;-v 显示不被匹配到的行

用扩展正则表达式书写:

# grep -E -v "nologin$" /etc/passwd  ;-E 表示使用扩展正则表达式

3.找出当前系统上其用户名和默认shell相同的用户的信息

# grep "^\(.*\)\>.*\1$"  --color=auto /etc/passwd

用扩展正则表达式书写:

# grep "^(.*)\>.*\1$"  --color=auto /etc/passwd

时间: 2024-08-04 12:56:40

我的学习记录--grep , egrep的相关文章

linux学习之grep egrep 命令及正则表达式

有幸在马哥面授班学习linux,马哥常告诉我们要做就做到最好,希望通过这些博文把自己的学习经历和内容好好的记录下来,也算是复习. grep: Global search REgular expression and Print out the line. 文本搜索工具,根据用户指定的"模式(pattern)"对目标文本进行过滤,显示被模式匹配到的行. grep [OPTION]... 'PATTERN' FILE...  --color 正则表达式:由一类字符书写的模式,其中有些字符不

Linux学习之正则表达式&grep&egrep

我们经常需要在文档中搜索符合自己要求的内容,这些部分可能分散在文档的各个位置,各个角落.可以利用关键字例如/keyword或者?keyword一个一个的搜索,还有我可能不止想搜索关键字,而是指定一个范围,怎样操作?而且怎样把这些搜索到的内容集中地显示出来?使用正则表达式搜索字串的grep命令和egrep命令就可以满足我们的这个要求. 正则表达式(Regular Expression)是一种字符书写的模式,以行为单位进行字符的处理,透过一些特殊字符的辅助,利用这种模式可以轻易地达到对字符的搜索.删

Linux学习(二十三)正则表达式(一)grep/egrep

一.概述 正则表达式是运维工作中经常需要用到的知识.文件查找,日志分析,rewrite规则,shell脚本等等,都需要正则表达式的知识.那么什么是正则表达式呢?我的理解就是,按照一定的规则找到或者替换你需要的字符串,这个规则就是正则表达式,准确的讲,它就是一个规则.使用正则表达式的命令有很多,我们今天讲到的grep和egrep就是最常用的.此外还有sed.awk,我们会在后续接着讲到. 二.grep/egrep egrep是grep的增强版,grep能实现的egrep都能实现,而且在某些地方,使

通配符和正则表达式-grep,egrep,fgrep

通配符和正则表达式-grep,egrep,fgrep 通配符和正则表达式,通配符用于文件名匹配,命令支持ls,cp,rm等;正则为通用匹配,命令支持grep,awk,sed,vi,find等.文本过滤工具grep,egrep,fgrep 通配符 *  匹配零个或多个任意字符 ?  匹配单个任意字符 [] 匹配指定范围内的一个字符,[]括号中的 字符间隔符 可以省略,如,\=:等等.举例[1:2=3,5\7] = [12357],也推荐使用这种省略写法作为标准 ^  取反,表示非.注意:非数字即包

ELK stack 学习记录

ELK日志分析平台学习记录 首先ELK主要指elasticsearch .logstash 和kibana,三个开源软件组合而成的一套日志平台解决方案.可以将平时收集到的日志,通过前台展示出来,并且可以加以分析,理论上可以解放劳动力(再也不用干上生产取日志这种活了--很搓). 最近在研究ELKstack日志分析平台,网上相关的中文资料不多.所以呢也就写了这篇文章将自己的一些学习认识总结记录下来,基本偏实战,概念理论较少,概念这块,我想以后可以再开一篇文章来做一个阐述总结. 这篇文章中会先讲一下搭

[CentOS 7系列]grep/egrep

在开发脚本的时候,我们总会发现需要调用的某些字符串时有规律的.通过筛选.提取和调用这些有规律的字符串,完善脚本的处理流程.正则就是这么一串有规律的字符串.在各种编程语言中都有正则,原理基本一致.在linux学习中,掌握好正则对于编写shell脚本能打下深厚根基. grep/egrep是shell脚本中常用的筛选命令之一.通过该命令配合正则表达式能够有效快速的筛选出需要的文本内容. ▎grep命令的基本用法:grep [-cinvrABC] 'word' filename 参  数 作  用 -c

grep,egrep 及正则表达式

Linux中一切皆文件:文本文件,对文本文件的搜索就非常的关键和常用. Linux文本搜索工具:grep ,egrep,fgrep,文本搜索指文本文件中内容的搜索. 文件名的搜索是linux中bash的特性,globbing,文件名通配,有点windows中的搜索相似,但功能跟强大.一般配合 ls 命令使用.可参考视频:bash基础特性(01) globbing:中的元字符: *:用来通配任意长度任意字符,?:用来匹配单个字符,[]:用于比配指定范围内的字符,[^]:用于取反范围内的字符. 总结

grep/egrep和正则表达式汇总

grep, egrep, fgrep 语法格式: grep [option] ... 'PATTERN' FILE --color=auto 对目标FILE进行搜索,显示能够匹配的行 正则表达式 基本正则: grep 扩展正则: grep -E 或者 egrep fgrep: fast但是不支持正则表达 基本正则表达式的元字符: 字符匹配: .  匹配任意单个字符 [] 匹配指定范围内的单个字符 [0-9], [[:digit:]] 单个数字 [a-z], [[:lower:]] 单个小写字符

Linux学习之grep及正则表达式

1.grep:根据模式搜索文本,并将符合模式的文本行打印出来 使用基本正则表达式定义的模式来过滤文本的命令 grep 选项 模式(正则表达式) 参数 模式:由文本字符和正则表达式的元字符组合而成的匹配条件 -E:扩展正则表达式 -i:不区分大小写 -w:匹配整个单词 -x:匹配整行 -v:显示不匹配的行 --colour/--color:高亮显示匹配字符串 -A:打印匹配本身以及后面的几行 -B:打印匹配本身以及前面的几行 -C:打印匹配本机以后前后的几行 -o:只显示匹配到的字符串 -c:显示