加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

grep、egrep、正则表达式

发布时间:2020-12-13 22:50:38 所属栏目:百科 来源:网络整理
导读:一、为什么要用到文本过滤工具? Linux的基本概念之一,一切皆文件,平时我们在做大多数操作的时候,都是在对文件进行操作,此时我们就需要一种文本搜索工具,可以根据我们所指定的特定格式的内容,过滤出我们想要的段落,从而实现在一段复杂的文本中,过滤

一、为什么要用到文本过滤工具?

Linux的基本概念之一,一切皆文件,平时我们在做大多数操作的时候,都是在对文件进行操作,此时我们就需要一种文本搜索工具,可以根据我们所指定的特定格式的内容,过滤出我们想要的段落,从而实现在一段复杂的文本中,过滤出特定的内容,而我们把这段特定的格式叫做模式;

Global search REgular expression and Printout the line.

全局搜索正则表达式并打印出符合条件的行

文本搜索工具,可以根据用户所指定的“模式”(pattern)对目标文件进行过滤,显示被模式匹配到的行;

正则表达式:由一类字符书写的模式,其中有些字符不表示字符的字面意义,而是表示控制或通配功能;

元字符:不表示字面意义,而表示通配功能的字符

正则表达式:

基本正则表达式

扩展正则表达式

用法:

grep [OPTION]...‘PATTERN’ FILE...

option:

-v:反向选取,显示出匹配指定模式以外的内容

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

-i:忽略字符大小写

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

-A#:显示匹配到的行,及其后#行的内容

-B #:显示匹配到的行,及前#行的内容

-C #:显示匹配到的行,及其前后# 行的内容

PATTERN:模式,可以是普通的字符串,也可以是正则表达式(模式需加引号)

字符匹配:

.: 匹配任意一个单个字符;

wKiom1RoliGSYqAfAADkTkIFB9E310.jpg

*: 匹配其前的任意长度任意字符;

wKioL1RolBbC3mb1AAE5u-xtuUo594.jpg

?:匹配其前字符0个或1个;

wKiom1RolKPx9gL6AAEsP26Ao8M660.jpg

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

wKioL1RolrXzEHsiAADyzqxkgTQ779.jpg

[:digit:]: 匹配全部数字[0-9]

[:lower:]: 匹配全部小写字母 [a-z]

[:upper:]: 匹配全部大写字母 [A-Z]

[:alpha:]: 匹配全部大小写字母[a-z][A-Z]

[:alnum:]: 匹配大小写字母和数字 [a-z][A-Z][0-9]

[:punct:]: 匹配所有标点符号

[:space:}: 匹配全部空白字符空格、Tab等

[^]:匹配指定模式以外的字符

wKioL1RolXTD49AoAAE7cH7nJsI642.jpg

{n}:匹配其前字符出现了n次;

wKioL1RolzeRdDA4AAEYTVVh8j0874.jpg

{n,}:匹配其前字符出现了至少n次;

wKiom1Rol1fz3wUqAAEWRHA3RpM280.jpg

{n,m}:匹配其前字符出现了n到m次;

wKiom1Rol3jjFiQqAAEsAtkvuIY352.jpg

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

wKioL1RomEeBrREvAAEtpVHK950793.jpg

位置锚定:

^:锚定行首

wKioL1RomOmRv1IPAAEPbdAcDdk326.jpg

$:锚定行尾


wKioL1RomSTQPxBcAAEwKmFvAYk903.jpg

^$: 锚定空白行

wKioL1Romf-BxOuQAADiMr5m8gQ505.jpg

&;:锚定词首

&;: 锚定词尾

wKiom1RomXLDTsciAAETMRRJjrg365.jpg

b:锚定词首或词尾,功能同 &; 或 &;

wKiom1RomZ2ynpE0AAEX3NAaNdg637.jpg

分组:

():常用在模式中前面匹配到了指定的字符串,而这段字符后面也需要引用相同的字符串;

():匹配 1 2 3引用 ;

模式自左而右,引用第# 个左括号以及与其基本右括号之间的模式匹配到的内容;

例:

root:x:0:0::/home/root:/sbin/nologin
tom:x:0:0::/home/tom:/sbin/nologin


此时我想匹配用户名和家目录

#grep‘(^&;[[:alpha:]]*&;).*1’filename


extended grep :扩展的 grep

注:扩展的和上面用法相同,只是+、?、()、{} 在扩展中不用转义,此处就不一一举例;

egrep[OPTION]<patter>filename


字符匹配:

.: 匹配单个任意字符;

*:匹配其前字符0次1次或多次


+: 匹配其前字符至少一次


?: 匹配其前字符0次或1次


[:digit:]:匹配全部数字[0-9]

[:lower:]:匹配全部小写字母 [a-z]

[:upper:]:匹配全部大写字母 [A-Z]

[:alpha:]:匹配全部大小写字母[a-z][A-Z]

[:alnum:]:匹配大小写字母和数字 [a-z][A-Z][0-9]

[:punct:]:匹配所有标点符号

[:space:]:匹配全部空白字符空格、Tab等

[^]:匹配指定模式以外的字符

{n}:匹配其前字符出现了n次;

{n,}: 匹配其前字符出现了至少n次;

{n,m}: 匹配其前字符出现了n到m次;

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

位置锚定:

^: 锚定行首

$: 锚定行尾

^$:锚定空白行

&;:锚定词首

&;:锚定词尾

b:锚定词首或词尾

分组:

():常用在模式中前面匹配到了指定的字符串,而这段字符后面也需要引用相同的字符串;

():匹配 1 2 3引用 ;

模式自左而右,引用第# 个左括号以及与其基本右括号之间的模式匹配到的内容;

或者:

a|b:a或者b

ab|cd:ab或者 cd ,表示整个;

a(b)|(c)d:这个表示单一一个或;

# grep -E 'pattern' file ...

# egrep 'pattern' file ...

以上就是正则表达式grep、egrep的简单用法,马哥说让不懂的人一看就能懂,具体懂不懂就看你悟性了;

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读