grep、egrep、fgrep以及正则表达式学习总结

3.1.1、Grep常用选项:

PS:为了能更好的学习每一个知识,我在每一个知识点后面都有加一个例子,自己多多动手,多多练习,这样效果才会更好。

一、grep起源

grep原先是ed下的一个应用程序,其名称来自于g/re/p(globally search a regular expression and print,以正规表示法进行全域查找以及打印),在ed下,输入g/re/p这个命令后,会将所有符合原先定义的字符串,以行为单位打印出来

二、grep用处

grep是用来搜索文本或者搜索某些文件里面的行,这些行里面包括和给定的字符串或者单词相匹配的字符串或者单词。默认情况下,grep显示出匹配到的行。用grep搜索文本,找到里面匹配一个或者多个正则表达式的行,并且输出这些行。Grep被认为是UNIX和其他类UNIX操作系统中最有用的命令之一。

三、Grep使用

grep [OPTIONS] PATTERN[FILE...]

在 grep[OPTIONS] PATTERN [FILE...] 中的PATTERN可以是一个字符长也可以是一个正则表达式

3.1、PATTERN是一个字符串:

3.1.1、Grep常用选项:

--color:

搜索到的"hi"字符串,显示为红色,auto表示自动的

grep --color=auto ‘hi‘ b.txt
hi jerry

-v:反向选取,以下面为例,就是不包含"hi"字符串

# cat b.txt
hello world
hi jerry
my name is linux.

[[email protected] bash]# grep -v ‘hi‘ b.txt
hello world
my name is linux.

-o:仅显示匹配到的内容

[[email protected] bash]# grep ‘hi‘ b.txt
hi jerry
[[email protected] bash]# grep -o ‘hi‘ b.txt
hi

-i:忽略字符大小写,以下面为例,加上-i之后,能匹配到"My"了

[[email protected] bash]# cat b.txt
hello world
hi jerry
my name is linux.
Hello world
My name is linux.

[[email protected] bash]# grep ‘my‘ b.txt
my name is linux.
[[email protected] bash]# grep -i ‘my‘ b.txt
my name is linux.
My name is linux.

-A #:把匹配到的行的后#行也打印出来,以下面为例,把匹配到的那一行的后两行也打印出来;

[[email protected] bash]# cat b.txt
hello world
hi jerry
my name is linux.
Hello world
what is your name?
Learn linux is fun.
Do you think so?

[[email protected] bash]# grep -A 2 ‘what‘ b.txt
what is your name?
Learn linux is fun.
Do you think so?

-B #:把匹配到的行的前#行业打印出来,以下面为例,把匹配到的那一行的前两行也打印出来;

[[email protected] bash]# cat b.txt
hello world
hi jerry
my name is linux.
Hello world
what is your name?
Learn linux is fun.
Do you think so?

[[email protected] bash]# grep -B 2 ‘what‘ b.txt
my name is linux.
Hello world
what is your name?

-C #:把匹配到的行的前#行和后#行也打印出来,如下所示,把匹配到那行的前后两行都打印出来;

[[email protected] bash]# cat b.txt
hello world
hi jerry
my name is linux.
Hello world
what is your name?
Learn linux is fun.
Do you think so?

[[email protected] bash]# grep -C 2 ‘what‘ b.txt
my name is linux.
Hello world
what is your name?
Learn linux is fun.
Do you think so?

3.2、PATTERN是一个正则表达式:

尽管直接使用最简单直接的pattern字串可以完成一些重要的任务,但是grep命令的真正的威力在于它可以使用正则表达式来完成复杂的模式字串的匹配。

3.2.1 什么是正则表达式?

正则表达式:

正则表达式又称正规表达式、正规表示法、正规表示式、规则表达式、常规表达式(英文:Regular Expression—>这里正好和grep的英文名对应,grep就是搜索正规表达式并且打印输出),在代码中常常简写为regex,regexp或RE,计算机科学的一个概念。正则表达式使用单个字符串来描述、匹配一系列符合某个句法规则的字符串。在很多文本编辑器里,正则表达式通常被用来检索、替换那些符合某个模式的文本。许多程序设计语言都支持利用正则表达式进行字符串操作。例如,在Perl中就内建了一个功能强大的正则表达式引擎。正则表达式这个概念最初是由UNIX中的工具软件(例如sed和grep)普及开的。正则表达式通常缩写成”regex”,单数有regexp、regex,复数有regexps、regexes、regexen。

正则表达式历史:

最初的正则表达式出现于理论计算机科学自动控制理论和形式化语言理论中。在这些领域中有对计算(自动控制)的模型和对形式化语言描述与分类的研究。 1940年,WarrenMcCulloch与Walter Pitts将神经系统中的神经元描述成小而简单的自动控制元。 1950年代,数学家斯蒂芬·科尔·克莱尼利用称之为“正则集合”的数学符号来描述此模型。肯·汤普逊将此符号系统引入编辑器QED,然后是Unix上的编辑器ed,并最终引入grep。自此,正则表达式被广泛地使用于各种Unix或者类似Unix的工具,例如Perl

正则表达式两类

在grep的PATTERN中分两类正则表达式:

基本正则表达式:

扩展正则表达式

Grep命令中使用的是基本的正则表达式,如果想使用更高级也就是扩展正则表达式需要指定选项-E,相当于egrep命令。

基本正则表达式:

包括四种类型的模式匹配规则

字符匹配:
.:点号是用来匹配任意单个字符

如下所示,"t...k"是匹配"t"和"k"之间有3个字符的字符串

[[email protected] bash]# cat b.txt
hello world
hi jerry
my name is linux.
Hello world
what is your name?
Learn linux is fun.
Do you think so?

[[email protected] bash]# grep ‘t...k‘ b.txt
Do you think so?

[]:匹配指定集合中的任意单个字符

[[:digit:]] 或者 [0-9]

[[:lower:]] ---à[a-z]

[[:upper:]] --à[A-Z]

[[:alpha:]] -à[a-zA-Z]

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

[[:space:]] -à

[[:punct:]]

[^]:匹配指定集合外的任意单个字符

匹配次数:

对其前面紧邻字符所能出现的次数做出限定

*:匹配其前面的字符任意次,0次1次多次都行;

\?: 匹配其前面的字符0次或者1次,也就是说没有可以,有的话只能出现一次;

\+: 匹配其前面的字符至少一次;

\{m\}: 匹配其前面的字符m次;

\{m,n\}: 匹配其前面的字符至少m次,最多n次;

\{m,\}: 匹配其前面的字符至少m次,多余m次无限制;

.*: 匹配任意长度的字符

位置锚定:

^: 锚定行首

$: 锚定行尾

^$: 锚定空白行

\<或者\b: 锚定词首

\>或者\b: 锚定词尾

\<\>:锚定单词

\(\):分组

后向引用:

如果在模式中使用\(\)实现了分组,在文本检查中,如果\(\)模式匹配到了某个内容,此内容后面的模式可以被引用;用\1引用第一个\(里面的内容,用\2应用第二个\(里面的内容,一次类推\3、\4 …….

时间: 2024-10-11 14:24:16

grep、egrep、fgrep以及正则表达式学习总结的相关文章

【Linux相识相知】文本处理工具之grep\egrep\fgrep及正则表达式

常说Linux上有文本处理的三剑客,grep.sed和awk,本文就grep做出详细的描述,并引出正则表达式. grep NAME:打印模式匹配的行 SYNOPISIS: grep [OPTIONS] PATTERN [FILE...] grep [OPTIONS] [-e PATTERN | -f FILE] [FILE...] 常用选项: --color=auto:对匹配到的文本着色后进行高亮显示,默认已被别名alias grep='grep --color=auto' -i:忽略字符的大小

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

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

五. 正则表达式grep, egrep, fgrep

grep,egrep,fgrep : print lines matching a pattern 1.grep : grep [options] PATTERN FILE... PATTERN由元字符和和普通字符组成 -i : --ignore-case , 忽略大小写 -o : --only-matching, 只显示所匹配到的字符,二不是整行 -n : --line-number, 输出所匹配行的行号 -v : --invert-match, 显示除匹配行外的所有行 -E : --exte

Linux中 文本处理命令 grep egrep fgrep的使

个人见解:我认为Linux中的文本处理命令 grep egrep fgrep命令 其实只要牢牢掌握grep就可以了 因为其他两个几乎是一样的 不一样的地方也很好区分 grep 基本使用方法: 使用方法 grep [选项] '表达式' #学习的时候没好好听 不知道自己写错没 为了这篇博文的通常 我还是先不看之前学习的视频了这里的常用选项有 -o -v -i -n -A -B -C -数字 -E [email protected]:~# grep -o '^root:' /etc/passwd #-

grep, egrep, fgrep笔记

grep, egrep, fgrep grep: 根据模式搜索文本,并将符合模式的文本行显示出来.Pattern: 文本字符和正则表达式的元字符组合而成匹配条件 grep [options] PATTERN [FILE...]    -i:不区分大小写    --color    -v: 显示没有被模式匹配到的行    -o:只显示被模式匹配到的字符串 *: 任意长度的任意字符?: 任意单个字符[]:[^]: 正则表达式:REGular EXPression, REGEXP元字符:.: 匹配任意

文本进行搜索:grep egrep fgrep

grep名称来自于g/re/p(globally search a regular expression and print,以正规表示法进行全域查找以及打印),是一个最初用于Unix操作系统的命令行工具.在给出文件列表或标准输入后,grep会对匹配一个或多个正则表达式的文本进行搜索,并只输出匹配(或者不匹配)的行或文本. 命令名称:grep, egrep, fgrep命令作用:print lines matching a pattern命令用法:grep [OPTIONS] PATTERN [

grep egrep fgrep的使用

grep命令 grep [options] PATTERN [FILE...] 通过搜索于PATTERN匹配的字段,在FILE文件中查找到匹配的字段并显示整个行. options -A num:文本后几行 # grep -A 3 "root" /etc/passwd            root:x:0:0:root:/root:/bin/bash        bin:x:1:1:bin:/bin:/sbin/nologin        daemon:x:2:2:daemon:/

Linux中的正则表达式 grep egrep fgrep

正则表达式: REGEXP REGuler EXPression,使用元字符和其他字符串来描述.匹配一系列符合某个句法规则的字符串.默认尽可能长得匹配(贪婪模式). 元字符: .:匹配任意单个字符(文件名通配中?表示任意单个字符) []:匹配指定范围内的单个字符 [^]:匹配指定范围外的单个字符 [:space:]:空白字符 [:puntt:]:所有标点符号 [:upper:]:所有大写字母 [:lower:]:所有小写字母 [:alpha:]:所有大小写字母 [:digit:]:所有数字 [:

linux基本命令grep egrep fgrep用法以及正则表达式

1.1.基本定义:  www.2cto.com grep(global search regular RE ) and print out the line,全面搜索正则表达式并把行打印出来)是一种强大的文本搜索工具,它只能使用基本的正则表达式来搜索文本,并把匹配的行打印出来. grep是很常见也很常用的命令,它的主要功能是进行字符串数据的比较,然后符合用户需求的字符串打印出来,但是主意,grep在数据中查找一个字符串时,是以"整行"为单位进行数据筛选的. egrep命令等同于grep