grep正则表达式详解

08月27日的作业

正则表达式:

(RegularExpression,在代码中常简写为rex、regexp或RE)

正则表达式使用单个字符串来描述、匹配一系列符合某个句法规则的字符串。通常被用来检索、替换符合某个模式的文本。

正则表达式是指一类字符书写的模式(pattern)这些字符成为元字符,元字符不表示其字面意义,而用于表示通配或控制功能。

正则表达式包括两类:基本正则表达式,扩展正则表达式

grep命令只支持基本正则表达式;

egrep支持扩展正则表达式("e" 表示扩展),

fgrep表示fast grep,不支持正则表达式,所有的元字符都被当做普通字符处理,搜索速度很快。

<<========================================【grep】========================================>>

grep命令

功能:

globalsearch regular expression(RE) and print out the line

全局搜索正则表达式,并把模式所匹配到的整行显示出来

格式:

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

常用选项:

--color=auto 指定颜色

-v  反向匹配,显示不能被模式匹配到的行

-o  仅匹配被模式匹配到的字串,而非整行

-i  不区分大小写,ignore-case

-E  支持扩展

-A # 还显示模式下面的一行

-B # 还显示模式上面的一行

-C # 前后各显示一行

元字符:

.  任意单个字符

*  匹配其前面的字符任意次;

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

\?  匹配其左侧0次或1次

\+  其左侧字符至少出现1次

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

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

[0-9], [[:digit:]]

[a-z], [[:lower:]]

[A-Z], [[:upper:]]

[[:alpha:]]

[[:alnum:]]

[[:space:]]

[[:punct:]]

次数匹配:

\{m\} 匹配m次

\{m,n\} 匹配至少m次,至多n次

\{m,\} 至少m次;多则不限

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

位置锚定:

^  锚定行首,用于模式的最左侧

^CHARACTER

$: 锚定行尾,用于模式的最右侧

CHARACTER$

\<CHARACTER  锚定词首,\bCHARACTER

CHARACTER\>  锚定词尾,CHARACTER\b

锚定单词:

\<KEYWORD\>

\bKEYWORD\b

^$: 锚定空白行

分组:

\(\)

\(ab\)*xy

引用:

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

\2

...

<<========================================【egrep】========================================>>

egrep命令

grep-e  PATTERN [FILE...]

egrep[OPTIONS] PATTERN [FILE...]

★egrep和grep用法、选项、元字符都一样,

不同的地方就是匹配次数和分组的时候特殊字符无需再使用\转义

次数匹配:

*  匹配其前面的字符任意次;

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

+  匹配其前面的字符至少1次

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

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

{m,} 至少m次;

{0,n} 至多n次;

位置锚定:

^  锚定行首,用于模式的最左侧

^CHARACTER

$: 锚定行尾,用于模式的最右侧

CHARACTER$

\<CHARACTER  锚定词首,\bCHARACTER

CHARACTER\>  锚定词尾,CHARACTER\b

锚定单词:

\<KEYWORD\>

\bKEYWORD\b

^$: 锚定空白行

分组:

()

(ab)*xy

引用:

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

\2

...

|: 或者, ac|bc

grep -E "s(C|c)hool"

结果是:sChool,或school

fgrep:(f=fast)快速匹配,不解析正则表达式

作业:

显示/etc/passwd文件中以bash结尾的行

# grep bash$ /etc/passwd

显示/etc/passwd文件中的两位数或三位数

# grep "\<[0-9]\{2,3\}\>" /etc/passwd

显示`netstat-tan`命令结果中以‘LISTEN’后跟0个、1个或者多个空白字符结尾的行

#netstat -tan | egrep "\<LISTEN\>[[:space:]]{0,}$"

添加用户bash、testbash、basher以及nologin用户(nologin用户的shell为/sbin/nologin);

而后找出/etc/passwd文件中用户名与其shell名相同的行

# useradd bash;useradd testbash;useradd basher;useradd -s /sbin/nologin nologin

# egrep ‘(^[[:alpha:]]+\>).*\1‘ /etc/passwd

显示当前系统上root、centos或者user1用户的默认shell和UID (请事先创建这些用户,若不存在)

# egrep ‘(^\<root\>|^\<centos\>|^\<user1\>)‘ /etc/passwd |cut -d: -f3,7

找出/etc/rc.d/init.d/functions文件中某单词(单词中间可以存在下划线)后面跟着一组小括号的行

# grep "\<[[:alpha:]_]\+\>()" /etc/rc.d/init.d/functions

使用echo输出一个路径,而后egrep找出其路径基名;进一步的使用egrep取出其目录名

#  echo "/etc/rc.d/init.d/functions/"|egrep -o "[^/]+/?$"|cut -d/ -f1

#   echo "/etc/rc.d/init.d/functions/"|egrep  -o ".+/[^/]"|cut -d/ -f1-4

找出ifconfig命令执行结果中1-255之间的数字

# ifconfig|egrep -o "\<([1-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])\>"

时间: 2025-01-05 02:42:33

grep正则表达式详解的相关文章

grep正则表达式详解及练习

grep正则表达式详解及练习 一.在学习grep正则表达式前,先了解下linux著名的文本处理三剑客: (1)grep.egrep.fgrep 文本搜索工具. (2)sed     文本编辑工具,一种流编辑器,行编辑工具. (3)awk 强大的文本分析工具,文本格式化工具,文本报告生成器. 以上三大命令均支持正则表达式,本文以grep正则表达式为例展开学习. 1.什么是正则表达式? 正则表达式(Regular Expression):由一类特殊字符及文本字符所编写的模式,其有些字符不表示其字面意

grep用法详解 grep与正则表达式

Linux系统中grep命令是一种强大的文本搜索工具,它能使用正则表达式搜索文本,并把匹 配的行打印出来.grep全称是Global Regular Expression Print,表示全局正则表达式版本,它的使用权限是所有用户. 主要参数    [options]主要参数:    -c:只输出匹配行的计数.    -I:不区分大 小写(只适用于单字符).    -h:查询多文件时不显示文件名.    -l:查询多文件时只输出包含匹配字符的文件名.    -n:显示匹配行及 行号.    -s

grep 命令详解及相关事例

一.匹配字符 .    匹配任意单个字符 [ ]  匹配指定范围内的任意字符 [^]  匹配飞指定范围内的任意字符 [:alpha:] 字母字符 [:lower:] 小写字母字符 [:upper:] 大写字母字符 [:digit:] 数字 [:alnum:] 字母数字字符 [:space:] 空白字符(禁止打印),如回车符.换行符.竖直制表符和换页符 [:punct:] 标点字符 [:cntrl:] 控制字符(禁止打印) [:print:] 可打印字符 使用时一般使用两个中括号,具体会在下面的例

linux grep命令详解

linux grep命令详解 http://www.cnblogs.com/ggjucheng/archive/2013/01/13/2856896.html grep (global search regular expression(RE) and print out the line,全面搜索正则表达式并把行打印出来)是一种强大的文本搜索工具,它能使用正则表达式搜索文本,并把匹配的行打印出来. Unix的grep家族包括grep.egrep和fgrep.egrep和fgrep的命令只跟gr

文本处理工具之一grep命令详解

grep(Globel Search Regular Expression and Printing out the line)全面搜索正则表达式并把行打印出来)是一种强大的文本搜索工具,是一个对行进行操作的搜索工作,它能使用正则表达式搜索文本,并把匹配的行打印出来.Unix的grep家族包括grep.egrep和fgrep. egrep表示扩展的grep,相比grep支持更多的元字符,"grep -E"相当于egrep.fgrep是fast grep,不支持元字符,但是搜索速度更快.

Shell编程之---正则表达式详解

正则表达式详解 普通字符:只是字面的意思 元字符:超过字面意思的意义 基本正则表达式元字符及其意义 * #0个或多个在*字符之前的那个普通字符 .               #匹配任意字符 ^         #匹配行首 $         #匹配行尾 $$ #执行上一条命令 !$ #上一条命令的最后一个参数,例如是/etc/passwd,继续对该参数操作,可以为 cat !$ []        #匹配字符集合 \          #转义符 \{n\}      #匹配前面字符出现n次 \

awk.sed.grep三剑客详解

事前准备1.主机node1:172.16.133.112.作为实验的文件/etc/passwd /etc/fstab qinqin cp /etc/passwd . cp /etc/fstab . 一.grep用法详解1.grep是干什么的grep的全名是Galobal research Regular Expression and Pringtiong,即搜索正则表达式,也就是说grep简单来讲就是用来搜索匹配字符的2.grep分类grep有基本正则表达式和扩展正则表达式之分,不过她们的作用域

python正则表达式详解

python正则表达式详解 正则表达式是一个很强大的字符串处理工具,几乎任何关于字符串的操作都可以使用正则表达式来完成,作为一个爬虫工作者,每天和字符串打交道,正则表达式更是不可或缺的技能,正则表达式的在不同的语言中使用方式可能不一样,不过只要学会了任意一门语言的正则表达式用法,其他语言中大部分也只是换了个函数的名称而已,本质都是一样的.下面,我来介绍一下python中的正则表达式是怎么使用的. 首先,python中的正则表达式大致分为以下几部分: 元字符 模式 函数 re 内置对象用法 分组用

grep命令详解

grep命令是linux下的行过滤工具,其参数繁多,下面就一一介绍个个参数的作用,希望对大家有所帮助.grep -- print lines matching a pattern (将符合样式的该行列出)◎语法: grep [options] PATTERN [FILE...] grep用以在file内文中比对相对应的部分,或是当没有指定档案时, 由标准输入中去比对. 在预设的情况下,grep会将符合样式的那一行列出.此外,还有两个程序是grep的变化型,egrep及fgrep. 其中egrep