正则与grep

计算机的世界里,有一组很奇特的字符串,它可以在搜索和替换操作中,提供要查找的确切内容。并在动态和静态文本中,都能表示。这也就是传说中的正则表达式。因其广泛的应用性,所以在各个语言和各种工具中都有使用,相对于各类应用而言,它就是最基本的材料。所以下面我们就来了解下正则表达式的意义。

正则表达式:

定义:是指一个用来描述或者匹配一系列符合某个句法规则的字符串的单个字符串。

功用:通常被用来检索或替换那些符合某个模式的文本内容。

分类:基本正则表达式,扩展正则表达式。

正则表达式分类:

基本型:

字符匹配

.         匹配任意单个字符

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

[0-9],[[:digit:]]所有数字

[a-z],[[:lower:]]所有小写字母

[A-Z],[[:upper:]]所有大写字母

[[:space:]]         空格

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

[[:alpha:]]         所有字母

[[:alnum:]]         所有字母和数字

[^]         取反

次数匹配前面字符匹配

*         任意长度,任意次

\?         0次或1次

\{m\}精确m次

\{m,n\}最少m次,最多n次

\{m,\}最少m次

\{0,n\}最多n次

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

位置锚定

^:         行首锚定

$:         行尾锚定

^$:空白行

\<:词首

\>:词尾

分组引用

\(\):分组

\#:         引用

扩展型:

字符匹配

.:                 匹配任意单个字符

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

[0-9],[[:digit:]]所有数字

[a-z],[[:lower:]]所有小写字母

[A-Z],[[:upper:]]所有大写字母

[[:space:]]         空格

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

[[:alpha:]]         所有字母

[[:alnum:]]         所有字母和数字

[^]:         取反

次数匹配         前面字符匹配

*:         任意长度,任意次

?:         0次或1次

+:         至少1次

{m}:精确m次

{m,n}:最少m次,最多n次

{m,}:最少m次

{0,n}:最多n次

位置锚定

^:行首锚定

$:行尾锚定

^$:空白行

\<:词首

\>:词尾

分组引用

():分组

\#:引用

或者

#|n:#或者n

说完了基本的材料正则表达式,我们就该说包裹在它外层的应用工具了。所以我们这里就介绍下一个基本的常规工具grep。

grep:

定义:grep是一种文本搜索工具,它的全称是:Global search REgular expression and Print out the line.,即全局搜索正则表达式并把行打印出来。PS:因为它支持正则表达式,所以可以做为正则表达式外置的工具来使用。当然它还有它额外的命令选项来对正则语句进行微调。

功用:它是在文本中,把符合规则的那部分内容显示并打印出来。

语法格式:

grep [option]... ‘PATTERN‘ FILE...

option:选项,内可以填充命令选项

PATTERN:模式,内可以填充正则语句

命令选项:

-v:反向选取

-o:仅显示匹配的字串,而非字串所在的行

-i:忽略字符大小写

-E:支持使用正则表达式

-A#:显示之后的几行字串

-B#:显示之前的几行字串

-C#:显示前后的几行字串

补充:grep家族中包括了grep,egrep和fgrep工具。egrep是grep的扩展,支持更多元字符的扩展正则表达式。而fgrep则是fixed grep或fast grep,它不再支持正则表达式,仅仅是把所有的字母都看做单词。

示例:

前置命令:

alias grep=“grep --color=auto”//命名别名,将gerep定义为符合规则的内容自动添加颜色。

grep的常用选项:

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

例:检索文件/etc/passwd中非#的行。

grep -v "#" /etc/passwd

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

例:检索/etc/passwd文件中hadoop用户的行。

-i:不区分字符大小写;

例:检索/etc/fstab中包含u中间跟两个任意字符,最后一个字符为d的行,不区分大小写;

-E:支持扩展的正则表达式(加-E可以使用grep启用egrep的功能 grep -E)

例:检索/etc/inittab中包含a或b的行;

-A #:显示之后的几行字符

例:检索/etc/passwd包含root及后3行内容;

-B #:显示之前的几行字符

例:检索/etc/passwd包含hadoop及前3行内容;

-C #:显示前后的几行字符

例:检索/etc/passwd中包含shutdown的前后3行内容

-n:显示匹配行及行号

例:显示/etc/passwd中包含root的行及行号;

grep的模式(PATTERN):

字符匹配:

.:任意单个字符

例:在/etc/passwd文件中检索包含r后面两个字符,然后是t的行;

grep "r..t" /etc/passwd

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

例:在/etc/passwd中搜索以S或s后面接任意一个字符,之后是s的行;

grep "[sS].s" /etc/passwd

[0-9]:匹配任何一个数字

例:在/etc/passwd中搜索user后跟任意一个字符的行;

[[:alnum:]]:匹配任何一个字母或数字

[[:alpha:]]:匹配任何一个字母

[[:lower:]]:匹配任何一个小写字母

[[:upper:]]:匹配任何一个大写字母

[[:space:]]:任何一个空白字符

[[:punct:]]:任何一个标点符号

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

例:在/etc/selinux/config下非标点符号开始的行;

grep "^[^[:punct:]].*" /etc/selinux/config

位置锚定:

^:锚定行首

例:锚定/etc/fstab下,行首到空格之前的内容;

$:锚定行尾

例:检索/etc/passwd含有bash的行尾;

^$:空白行

例:统计/etc/fstab里的空白行数;

\<:锚定词首

例:锚定以r为词首的内容

\>:锚定词尾

例:锚定以t为词尾的内容

次数匹配:

*:任意次(0次或多次)

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

\{m\}:匹配m次

\{m,\}:至少m次

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

分组:

\(\)

引用:

\#

扩展正则表达式与基本正则表达式基本类似,也就格式稍有不同,并多了一个|符号。再此就不一一详述了。鄙人才疏学浅刚刚接触linux,如有错误和语述不详之处,尽请谅解!

此文章借鉴参考了jinlinger的《文本检索秘技之正则表达式grep和egrep》

原文出处: http://essun.blog.51cto.com/721033/1361920

正则与grep

时间: 2024-10-18 07:19:04

正则与grep的相关文章

十七. 正则以及grep ,sed,awk的简单应用

一.正则表达式:/ / grep,sed,awk 都能解释正则表达式 正则表达式:把一些特殊符号组合到一起描述字符和字符串的方法.^ 以什么开头 grep '^root' /etc/passwd$ 以什么结尾 如能登入系统的所有用 grep 'bash$'/etc/passwd. 任意一个字符 grep '^b.n' /etc/passwd 过滤取到bin的.* 所有字符* 代表前面的字符有0个或者无穷个 grep 'b*' /+ 必须用egrep 或 egrep -E 'ab+'表示前面的字符

笔记7 正则(grep、sed、awk工具)

正则含义:就是一串有规律的字符串 grep 用来过滤指定关键词的格式:grep后边跟关键词在跟文件名-c 显示行数 -i 不区分大小写,加上-i它会把大写的显示出来 -n 显示行号 -v 取反,意思就是把你指的关键词之外的全显示出来,例如我一开始指定要带nologin的,加上-v之后就会显示不带有它的,如图. -r 把一些子目录或者孙目录所有下边的文件遍历一遍-A后面跟数字,过滤出符合要求的行以及下面的n行,意思就是比如你要过滤关键词root,加上-A2,它会给你把只要有root关键词的这一行加

正则、grep、sed、awk

每次用到正则都要蛋疼一下,索性总结一下在这里. 正则 正则表达式主要分为基础正则和扩展正则.注意,正则和一般命令行输入的命令的通配符不同.正则只使用于支持这种表示法的工具,如:vi,grep,sed.awk.而ls等命令不支持这种表示,只能使用bash自身的通配符. 基础部分: [abc] 匹配括号中的一个 [^abc] 匹配非括号中的一个(取反) ^word 以word开头 word$ 以word结尾 [n1-n2] 从n1到n2之间的所有连续字符. 注意:这个连续与否,与ASCII编码有关,

正则和grep——再做正则就去死

grep 文本过滤工具 基本正则表达式 grep 语法 基本正则表达式的元字符 次数匹配 位置锚定 分组 扩展正则表达式 基本正则表达式的元字符 次数匹配 位置锚定 分组 或者 grep的介绍 linux上文本处理三剑客 grep:文本过滤(模式:pattern)作用: 把匹配到的行给予显示,没匹配到的行过滤掉. 模式:由正则表达式字符及文本字符所编写的过滤条件: REGEXP:由一类特殊字符及文本字符所编写的模式,其中有些字符不表示字符字面意义,而表示控制或匹配的功能: 分两类: 基本正则表达

正则配合grep使用简介

grepgrep: Global search REgular expression and Print out the line作用:文本搜索工具,根据用户指定的"模式"对目标文 本逐行进行匹配检查:打印匹配到的行模式:由正则表达式字符及文本字符所编写的过滤条件grep [OPTIONS] PATTERN [FILE...]grep root /etc/passwdgrep "$USER" /etc/passwdgrep '$USER' /etc/passwdgr

linux的正则、grep及egrep介绍

正则介绍: 解释对"正则表达式"的定义是:它使用单个字符串来描述或匹配一系列符合某个句法规则的字符串.在很多文本编辑器或其他工具里,正则表达式通常用来检索和替换那些符合某个模式的文本内容.许多程序设计语言也都支持利用正则表达式进行字符串操作.对于系统管理员来讲,正则表达式贯穿在我们的日常运维工作中,无论是查找某个文档,还是查询某个日志文件并分析其内容,都会用正则表达式. 其实正则表达式只是一种思想.一种表示方法.只要我们使用的工具支持这种表示方法,那么这个工具就可以处理正则表达式的字符

正则介绍grep

正则表达式,又称规则表达式,英文名为Regular Expression,在代码中常简写为regex.regexp或RE,是计算机科学的一个概念.正则表通常被用来检索.替换那些符合某个模式(规则)的文本. 正则表达式是对字符串(包括普通字符(例如,a 到 z 之间的字母)和特殊字符(称为"元字符"))操作的一种逻辑公式,就是用事先定义好的一些特定字符.及这些特定字符的组合,组成一个"规则字符串",这个"规则字符串"用来表达对字符串的一种过滤逻辑.

正则、grep

正则 正则表达式,又称为规律表达式.用来进行字符串操作,通常用来检索.替换那些符合某个模式(规则)的文本:正则表达式是对字符串操作的一种逻辑公式,就是用事先定义好的一些特定字符.及这些特定字符的组合,组成一个"规则字符串",这个"规则字符串"用来表达对字符串的一种过滤逻辑: grep/egrep sed awk grep 格式:grep [-cinvABC] 'word' filename -c 统计行数 grep -c 'not' passwd统计passwd 中

正则(grep)

正则简介: grep (1)基础用法 [[email protected] grep]# grep 'nologin' passwd bin:x:1:1:bin:/bin:/sbin/nologin daemon:x:2:2:daemon:/sbin:/sbin/nologin adm:x:3:4:adm:/var/adm:/sbin/nologin lp:x:4:7:lp:/var/spool/lpd:/sbin/nologin mail:x:8:12:mail:/var/spool/mail