正则表达式grep和egrep

          grepegrep和正则表达式的总结

一、grep的使用

1.grep的解释

grep为global search regularexpression(RE) and print out the line的缩写,即根据用户指定的文本搜索模式对目标文件进行搜索并显示能够被模式匹配到的行的一种文本搜索工具。

2.grep的使用格式

gerp [options]‘PATTERN‘file,....

其中PATTERN项需要使用‘‘或者"",如果需要对模式进行转换,则需要使用"",如果不需要进行转换,则使用‘‘或""都可以。模式还可以使用正则表达式来表示。

3.grep的常用选项

--color:用来指定被模式匹配到的字符的显示颜色,参数选项有never,always和auto

-v:反向匹配,即不能被模式所匹配到的行,也可以使用--invert-match长选项

-o:只显示被模式匹配到字符串,而非显示整行(grep默认显示被匹配到的整行)

-i:不区分大小写,也可以使用--ignore-case长选项

-E:支持扩展的正则表达式,相当于egrep

-A:与数字一起使用,显示被模式匹配到的行并且显示被匹配到的行的下面多少行

-B: 与数字一起使用,显示被模式匹配到的行并且显示被匹配到的行的上面多少行

-C: 与数字一起使用,显示被模式匹配到的行并且显示被匹配到的行的上下各显示多少行

4.正则表达式的字符合集:


.:表示匹配任意一个字符


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


[^]:匹配指定范围外的单个字符,也可使使用选项v来完成


[[:space:]]:表示空白字符


[[:lower:]]:表示所有小写字母


[[:upper:]]:表示所有大写字母


[[:aplha:]]:表示所有字母,也可使用[a-z]表示


[[:digit:]]:表示所有的数字,也可以使用[0-9]表示


[[:almun:]]:表示所有的数字和字母


[[:punct:]]:表示所有特殊字符

5.次数匹配:用来指定匹配其前面字符出现的次数,只能匹配模式紧靠着的一个字符

*:出现任意次

.*: 出现任意次的任意字符

\?: 出现0次或者1次

\{m\}: 表示出现m次

\{m,n\}: 表示至少出现m次,至多出现n次

\{m,\}: 表示最少出现m次

\{0,n\}:表示至多出现n次,其中0不能省略

案例:显示/etc/passwd中r后面出现最少一次,最多2次的


1

2

3

4


[[email protected] ~]# grep "ro\{1,2\}" /etc/passwd

root:x:0:0:root:/root:/bin/bash

operator:x:11:0:operator:/root:/sbin/nologin

rtkit:x:499:497:RealtimeKit:/proc:/sbin/nologin

6.位置锚定

位置锚定:

^:行首锚定:

写在模式最左侧

$:行尾锚定:

写在模式最右侧

^$:

空白行

不包含特殊字符的连续字符组成的串叫单词

\<:词首,出现在单词左侧

\>:词尾,出现在单词右侧

\b:出现在词首,词尾都可以

7.分组

\(\)

例如:\(ab\)*表示ab可以出现任意次(包括0次)

8.引用:对分组的字符串基于位置引用

\1: 后向引用,表示引用前面的第一个左括号与之对应的右括号中的模式所匹配到的内容

\2: 表示引用前面的第二个左括号与之对应的右括号中的模式所匹配到的内容

...

二、egrep的使用

基本等同于grep的使用:

1.字符


.:表示匹配任意一个字符


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


[^]:匹配指定范围外的单个字符,也可使使用选项v来完成


[[:space:]]:表示空白字符


[[:lower:]]:表示所有小写字母


[[:upper:]]:表示所有大写字母


[[:aplha:]]:表示所有字母,也可使用[a-z]表示


[[:digit:]]:表示所有的数字,也可以使用[0-9]表示


[[:almun:]]:表示所有的数字和字母


[[:punct:]]:表示所有特殊字符

2.次数匹配:用来指定匹配其前面字符出现的次数,只能匹配模式紧靠着的一个字符

*:出现任意次

.*: 出现任意次的任意字符

?: 出现0次或者1次

+: 至少出现1次

{m}: 表示出现m次

{m,n}: 表示至少出现m次,至多出现n次

{m,}: 表示最少出现m次

{0,n}:表示至多出现n次,其中0不能省略

3.位置锚定符:用于来指定字符出现的位置

^:用于锚定行首,用法为^Char

$:用于锚定行尾,用法为Char$

^$:用来表示空白行

4.单词的锚定:所有非自然的单词

\<:用于锚定单词的词首,也可以使用\b表示,用法为\<Char或\bChar

\>:用于锚定单词的行尾,也可以使用\b表示,用法为Char\>或Char\b

5.分组:对模式进行分组

\(\)

6.引用:对分组的字符串基于位置引用

\1: 后向引用,表示引用前面的第一个左括号与之对应的右括号中的模式所匹配到的内容

\2: 表示引用前面的第二个左括号与之对应的右括号中的模式所匹配到的内容

egrep相当于grep –E。

以下是一些课堂练习:

1、显示/proc/meminfo文件中以大小写s开头的行;

# grep "^[sS]"/proc/meminfo

# grep -i "^s"/proc/meminfo

2、取出默认shell为非bash的用户;

# grep -v "bash$"/etc/passwd | cut -d: -f1

3、取出默认shell为bash的且其ID号最大的用户;

# grep "bash$"/etc/passwd | sort -n -t: -k3 | tail -1 | cut -d: -f1

4、显示/etc/rc.d/rc.sysinit文件中,以#开头,后面跟至少一个空白字符,而后又有至少一个非空白字符的行;

# grep"^#[[:space:]]\{1,\}[^[:space:]]\{1,\}" /etc/rc.d/rc.sysinit

5、显示/boot/grub/grub.conf中以至少一个空白字符开头的行;

# grep"^[[:space:]]\{1,\}[^[:space:]]\{1,\}" /boot/grub/grub.conf

6、找出/etc/passwd文件中一位数或两位数;

# grep --color=auto"\<[0-9]\{1,2\}\>" /etc/passwd

7、查看当前系统上root用户的所有信息;

# grep "^root\>"/etc/passwd

8、添加用户bash和testbash、basher,而后找出当前系统上其用户名和默认shell相同的用户;

# grep --color=auto"^\([[:alnum:]]\{1,\}\)\>.*\1$" /etc/passwd

正则表达式grep和egrep

时间: 2024-10-05 05:12:08

正则表达式grep和egrep的相关文章

Linux正则表达式grep与egrep

Linux正则表达式grep与egrep 正则表达式:它是指一个用来描述或者匹配一系列符合某个句法规则的字符串的单个字符串.在很多文本编辑器或其他工具里,正则表达式通常被用来检索或替换那些符合某个模式的文本内容.其实正则表达式,只是一种思想,一种表示方法.只要我们使用的工具支持表示这种思想那么这个工具就可以处理正则表达式的字符串.常用的工具有grep, sed, awk,这三个都是针对文本的行才操作的. grep  过滤器语法: grep  [-cinvABC]  'word'  filenam

正则表达式grep和egrep的基本使用

正则表达式grep和egrep的使用 正则表达式(REGular EXPression REGEXP)就是处理字符串的方法,它是以行为单位来进行字符串的处理行为,正则表达式通过一些特殊符号的辅助,可以让用户轻易达到查找.删除.替换某特定字符串的处理程序.正则表达式中的模式(pattern)以正则表达式的元字符,以及正常字符组合而成. 正则表达式的字符串依照不同的严谨度而分为基础正则表达式与扩展正则表达式. 一.基础正则表达式(grep) Grep全称: Global search Regular

Linux 的正则表达式grep、egrep

阅读目录 简单介绍 正则表达式的一些选项及作用 基本正则表达式 扩展正则表达式 在运维中正则表达式对于笔者来说必须学习和掌握的,它是一个难点!首先它的元字符很多,组合的方法也是各种各样的,当然每个人学习和理解方法不一样,在其中遇到的问题也不一样,在Linux中想学习正则表达式,首先要学会的是grep以及egrep命令的使用 下面我会列出一小部分实例! 简单介绍 grep.egrep是一种文本搜索的工具,可以根据用户指定的模式对目标文本进行搜索过滤,显示出被模式匹配到的行 正则表达式分为两类: 基

grep与正则表达式,grep、egrep和fgrep

grep用法详解:grep与正则表达式 首先要记住的是: 正则表达式与通配符不一样,它们表示的含义并不相同!正则表达式只是一种表示法,只要工具支持这种表示法, 那么该工具就可以处理正则表达式的字符串.vim.grep.awk .sed 都支持正则表达式,也正是因为由于它们支持正则,才显得它们强大:1基础正则表达式grep 工具,以前介绍过.grep -[acinv]   '搜索内容串'   filename-a 以文本文件方式搜索-c 计算找到的符合行的次数-i 忽略大小写-n 顺便输出行号-v

正则表达式grep、egrep、fgrep

日期: 2015年08月27日 正则表达式: (RegularExpression,在代码中常简写为rex.regexp或RE) 正则表达式使用单个字符串来描述.匹配一系列符合某个句法规则的字符串.通常被用来检索.替换符合某个模式的文本. 正则表达式是指一类字符书写的模式(pattern)这些字符成为元字符,元字符不表示其字面意义,而用于表示通配或控制功能. 正则表达式包括两类:基本正则表达式,扩展正则表达式 grep命令只支持基本正则表达式: egrep支持扩展正则表达式("e" 表

正则表达式grep和egrep的用法

grep和egrep的用法 grep: Global search REgular expression and Print out the line. 表示全局正则表达式版本. grep,egrep是Linux下的文本搜索工具,这三个命令结合正则表达式能发挥强大的文本搜索功能. 正则表达式:由一类字符书写的模式,其中有些字符不表示字符的字面意义,而是表示控制或通配的功能. 正则表达式分为两种:基本正则表达式和扩展正则表达式. grep一般结合基本正则表达式使用,基本正则表达式的功能和用法如下:

Linux文件系统相关权限及正则表达式相关命令grep、egrep的使用说明

一.总结本次课程中所涉及命令的使用方法及相关实例展示 1.权限管理相关命令: (1)修改文件权限:chmod(用户类别:u,g,o,a) chmod 用户类别=MODE file...(修改某类用户或某些类用户权限) chmod 用户类别+|-MODE file,...(修改某类用户的某位或某些位权限) -R : 递归               --reference=/path/to/file ,...(复制某文件的权限)    (实例):创建用户mysql01,设置其家目录及内部的文件,属

grep、egrep

正则表达式是基于样式匹配的进行文本处理,透过一些特殊符号的辅助,可以达到搜寻.删除.取代某特定的字符串. grep可用于shell脚本,因为grep通过返回一个状态值来说明搜索的状态,如果模板搜索成功,则返回0,如果搜索不成功,则返回1,如果搜索的文件不存在,则返回2. 我们利用这些返回值就可进行一些自动化的文本处理工作. 正则表达式分为基本正则表达式和扩展正则表达式: grep: 默认支持基本正则表达式. egrep: 扩展正则表达式,是grep的扩展. 元字符:不表示字符本身的意义,而用于额

grep、egrep以及正则表达式的使用

正则表达式是linux学习里面很重要的一部分内容,也算是一个难点,元字符多,组合方法也各种各样,每个人学习理解方法不一样,其中遇到的问题也各不相同, 学习正则表达式首先要会的是grep以及egrep命令的使用. grep 是Globalsearch Regular expression an Print out the line的缩写,是一种文本搜索的工具,可以根据用户指定的"模式(pattern)"对目标文本进行搜索过滤,显示出被"模式"匹配到的行.这里要说的一点