Linux学习之grep及正则表达式

1、grep:根据模式搜索文本,并将符合模式的文本行打印出来

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

grep 选项 模式(正则表达式) 参数

模式:由文本字符和正则表达式的元字符组合而成的匹配条件

-E:扩展正则表达式

-i:不区分大小写

-w:匹配整个单词

-x:匹配整行

-v:显示不匹配的行

--colour/--color:高亮显示匹配字符串

-A:打印匹配本身以及后面的几行

-B:打印匹配本身以及前面的几行

-C:打印匹配本机以后前后的几行

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

-c:显示匹配了多少次

-n:在行首显示行号

2、正则表达式:分为基本正则表达式和扩展正则表达式

基本正则表达式(Basic REGEXP(REgular EXPression)):是对字符串操作的一种逻辑公式,就是用事先定义好的一些特定字符、及这些特定字符的组合,组成一个“规则字符串”,这个“规则字符串”用来表达对字符串的一种过滤逻辑。

元字符:指在正则表达式中起特殊意义的字符,元字符和shell的通配符基本相同,但是某些字符有着不同的意义

正则表达式默认是以贪婪模式匹配(尽可能长的去匹配)

‘搜寻字符串‘是正则表达式,为了避免shell的元字符对正则表达式的影响,使用‘‘单引号括起来,尽量避免使用""双引号,引号有时可省略

. 匹配任意单个字符(在shell通配符中用?来表示)

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

[^] 匹配指定范围外的任意单个字符(和shell统配符相同)

字符集:

[:digit:] 数字

[:lower:] 小写字母

[:upper:] 大写字母

[:punct:] 标点符号

[:space:] 空格

[:alpha:] 大小写字母

[:alnum:] 数字和大小写字母

匹配次数:

* 匹配其前面的字符任意次,可以是0次(shell通配符代表匹配任意长度的任意字符)

.* 匹配任意字符任意次

\? 匹配其前面的字符1次或0次

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

位置锚定:

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

$ 锚定行尾,次字符前面的任意内容必须出现在行尾

^$ 空白行

\<或\b 锚定词首,其后面的任意字符必须作为单词的首部出现

\>或\b 锚定词尾,其前面的任意字符必须作为单词的尾部出现

分组:后向引用功能,

\(\)

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

\2

\3

扩展正则表达式(EXtended REGEXP):egrep(匹配扩展正则表达式)

使用grep -E或egrep命令(egrep在一些发行版中已经不再使用,请使用grep -E)

在扩展正则表达式中元字符意义基本和基本正则表达式相同

次数匹配多一个元字符+,代表匹配其前的字符至少一次

分组();比基本正则表达式更明确

引入或者的概念用|表示

例如a|b代表a或b,(A|B)C代表AC或BC

fgerp:fast gerp(不支持正则表达式)

命令选项和grep相同

fgerp命令和grep、egrep不同的是,因为他搜索字符串而不是搜索匹配表达式的模式,fgerp命令使用快速的压缩算法。当处理大型文件时,fgerp比grep要快,当然fgerp自然比grep功能要弱。

Linux学习之grep及正则表达式

时间: 2024-09-29 08:09:39

Linux学习之grep及正则表达式的相关文章

Linux系统的grep以及正则表达式浅析!

grep命令可以从文本中或者通过管道送过来的字符流中或一个"-"符号代替文件名来搜索精确或者模糊的匹配信息,grep家族有三个命令:grep,egrep,fgrep. grep支持正则表达式匹配查找 egrep支持扩展正则表达式匹配查找 fgrep不支持正则表达式匹配查找 grep命令的格式: grep [OPT] 'PATTERN' FILE PATTERN是所需要匹配的内容 精确匹配中单双引号的含义相同 如果PATTERN是精确匹配(即只有普通字符不包含元字符)且字符串中间不包含空

Linux学习之grep篇

一.接上篇用户及权限管理 Command:chmod / chown / chgrp / umask 1.chmod(修改文件权限) SYNOPSIS        chmod [OPTION]... MODE[,MODE]... FILE...        chmod [OPTION]... OCTAL-MODE FILE...        chmod [OPTION]... --reference=RFILE FILE... 分为三类: u:owner(属主) g:group(属组) o

linux学习笔记---grep

先来讲讲grep(搜索过滤) 1.命令格式: grep [option] pattern file 2.命令参数: -a 不要忽略二进制的数据 -A<显示行数>          显示行数, 除了显示符合范本样式的那一列之外,并显示该行之后的内容 -b                          在显示符合样式的那一行之前,标示出该行第一个字符的编号 -B 显示行数             除了显示符合样式的那一行之外,并显示该行之前的内容 -c      计算符合样式的列数 -C<

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

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

Linux常用命令—grep及正则表达式

正则表达式:REGular EXPression,REGEXP 元字符: .:匹配任意单个字符 touch一个文件 对test.txt文件使用grep,单独查询'a' 使用'.' 以'a'结尾,前面任意一个字符,以'a'开头,后面任意一个字符. []:匹配指定范围内的任意单个字符 [^]:匹配指定范围外的任意单个字符 字符集合: 纯数字 [[:digit:]]或[0-9] 小写字母 [[:lower:]]或[a-z] 大写字母 [[:upper:]]或[A-Z] 大小写字母 [[:alpha:]

linux学习第二周;正则表达式

字符匹配: .  # 匹配任意单个字符 []  # 匹配指定范围内的任意单个字符 [^] # 匹配指定范围外的任意单个字符 等 . /*/.* # 不需要在字符串上加引号: 例如:go.*gle 匹配次数: * # 匹配前面的字符任意次,包括0次 .* # 任意长度的任意字符 以下用法都需要在字符串上加双引号; 例如:"go\{5\}gle" \? # 匹配其前面的字符0或1次 \+ # 匹配其前面的字符至少1次 \{n\} # 匹配前面的字符n次 \{m,n\} # 匹配前面的字符至

Linux学习笔记--grep命令(搜索字符串命令)

grep,查找字符串的意思,作用是在文件中匹配符合条件的字符串. 1. 命令格式: grep [选项] 字符串 文件名 ... 2. 常用选项: "grep -c" 统计匹配到'字符串'内容的行数.(c为count的意思) "grep -i" 忽略大小写区别.(i为ignore的意思) "grep -l" 打印出匹配到'字符串'内容的文件清单. "grep -n" 在匹配的行前面打印行号.(n为line number的意思)

linux学习-grep使用正则表达式示例

在linux上使用grep配合正则表达式可以产生强大的搜索的效果,由于正则表达式中含有较多的特殊字符,所以结合grep时,最好使用单引号将表达式括起来,以免造成错误.首先创建一个文件RegExp.txt,文本内容如下所示: --------TEXT BEGIN------------- good morining teacher hellp world is as script gold sunshine looks beautiful golden time files god belss m

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

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