linux正则表达式和扩展表达式

Centos的grep的正则表达式和扩展表达式

日期2015.08.28 备注:其简述来自于马哥课堂笔记

 grep

     grep是一个文本过滤工具根据用户指定的“模式(pattern)”逐行去搜索目标文本,打印匹配到的行;
     模式:由正则表达式的元字符及文本字符所编写的过滤条件;

其中,元字符:字符不表示其字面意义,而用于表示通配或控制功能

grep分为两类

基本的正则表达式:BRE

扩展的正则表达式:ERE

grep 使用格式

grep  [选项]   模式  [文件]

其常用选项有

--color=auto:对匹配到的串做高亮显示; 备注:--color 默认的命令别名中已经定义了grep=grep --color了

加上--color

-v:显示模式匹配不到行;

-i: 忽略字符大小写;

-o: 仅显示能够被模式匹配到的字符串;

-q: 静默模式,匹配到什么也不显示。

-E:使用扩展的正则表达式;这里就不发图了后面有演示。

基本正则表达式的元字符:
 字符匹配:
 .: 匹配任意单个字符;

[]:匹配指定范围内的任意单个字符;下图中[a-z]和[a-c]匹配字符就不一样,因为字符范围不同

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

[:lower:]:小写字母

[:upper:]:大写字符

[:space:]:空白字符

[:punct:]:标点符号

[:alpha:]:大小写字母;意思是所有的字母不分大小写

[:digit:]:数字

次数匹配:用于要指定其次数的字符的后面,表示指定其前面的字符

*: 任意次

\?:0或1次

\+:1或多次
\{m\}:精确限制为m次
\{m,n\}: 至少m次,至多n次,[m,n]
\{0,n\}:至多n次,少了可以没有
\{m,\}:至少m次,多则不限
.*: 匹配任意长度的任意字符

以上命令总结如下图:

位置锚定:
 ^: 行首锚定;用于模式的最左侧;

$: 行尾锚定;用于模式的最右侧; 注意,在Centos7后$来锚定行尾的时候要使用单引号。

\<, \b: 词首锚定;用于表示单词的模式的左侧;

\>, \b:词尾锚定;用于表示单词的模式的右侧;

^$: 空白行;我们使用管道和wc -l 来统计匹配到的空白行 如下图:

分组:\(\)
     分组的小括号中的模式匹配到的内容,会在执行过程中被正则表达式引擎记录下来,并保存内置的变量      中;这些变量分别是\1, \2, ...
   \1: 从左侧起,第一个左括号,以及与之配对的右括号中间的模式所匹配到的内容;
    \2: 从左侧起,第二个左括号,以及与之配对的右括号中间的模式所匹配到的内容;                    ...
    后向引用:使用变量引用前面的分组括号中的模式所匹配到的字符;

扩展的正则表达式:

grep家庭有三个命令:
               grep:基本正则表达式
                -E: 扩展正则表达式
                -F:不支持正则表达式
                egrep:扩展正则表达式
                fgrep:不支持正则表达式

扩展正则表达式的元字符

字符匹配:
                   .: 任意单个字符
                   []:指定范围内的任意单个字符
                   [^]:不在指定范围内的任意单个字符
               次数匹配:

.*:匹配任意字符

*:匹配任意字符
                   ?:0次或1次;
                   +:1次以上;
                   {m}:精确匹配m次;
                   {m,n}:至少m次,至多n次;

{0,n}:至多n次,少了可以没有
                   {m,}:至少m次,多则不限

位置锚定:
                   ^: 锚定行首
                   $: 锚定行尾
                   \<, \b:词首锚定;用于表示单词的模式的左侧;

\>, \b:词尾锚定;用于表示单词的模式的右侧;

^$: 空白行
               分组:()
                   后向引用:\1, \2, ...

以上扩展正则表达式和正则表达式使用方法差不多在这里就不一一截图了。

或者:
                   a|b
                    C|cat: 不表示Cat或cat,而表示C或cat;
                    要写成(C|c)at

说了那么多我们还是一起来做写练习吧!

使用正则表达式和扩展表达式实现以下功能:

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

答案如下图:

扩展表达式则是,如下图:

2、显示/etc/passwd文件中的两位数或三位数;如下图

扩展表达式,如下图:

3、显示‘netstat -tan‘命令结果中以‘LISTEN’后跟0个、1个或多个空白字符结尾的行;如下图:

扩展表达式 如下图:

4、添加用户bash,testbash, basher以及nologin用户(nologin用户的shell为/sbin/nologin),并找出    shell和用户一样的用户 2图、

太晚了,明天继续写

使用扩展正则表达式实现以下功能

1、显示当前系统上root、centos或user1用户的默认的shell和UID;
                    2、找出/etc/rc.d/init.d/functions文件中某单词(单词中间可以存在下划线)后面跟着一组小括号的行;
                    3、使用echo输出一个路径,而后egrep找出其路径基名;
                         进一步地:使用egrep取出其目录名;
                    4、找出ifconfig命令执行结果中1-255之间的数字;

时间: 2024-10-10 06:27:04

linux正则表达式和扩展表达式的相关文章

Linux正则表达式及扩展表达式、egrep命令的说明(8月27日作业练习)

1.总结本此课程中所涉及命令的使用方法及相关示例展示: 权限管理:           权限管理: chmod            所属关系管理: chown, chgrp            文件遮罩码:umask 修改文件权限:chmod          chmod [OPTION]... MODE[,MODE]... FILE...           chmod [OPTION]... OCTAL-MODE FILE...           chmod [OPTION]... -

Linux 系统之扩展表达式 --egrep

扩展的正则表达式: 扩展正则表达式,顾名思义是对正则表达式的一个扩展,其接受所有的正则表达式,并对grep进行了扩充.如:支持或者表达式  a|b 字符匹配:     . : 匹配任意单个字符     [] : 匹配指定范围内的任意单个字符     [^] : 匹配指定范围外的任意单个字符 次数匹配:     * : 任意次     ? :0或1次,表示其左侧字符可有可无     +: 至少1次     {m}:精确匹配m次:     {m,n}:至少m次,至多次:     {m,}:至少m次:

[8-27]正则表达式、扩展表达式以及相关实战

本文旨在复习正则表达式,扩展正则表达式,对基本概念.基本用法等作记录 知识储备 正则表达式:是文本搜索工具,根据用户指定的"PATTERN模式"去逐行匹配目标文本,打印匹配到的行 模式: 由正则表达式的元字符及文本字符,所编写的过滤条件 元字符:字符不标识其字面意义,用于表示通配或控制功能: 逐行: 请注意:正则处理单位是"行",匹配时去匹配行,输出时输出行 BRE与ERE: BRE基本正则表达式,ERE扩展正则表达式 本质区别是[元字符的定义不一样罢了],常用参数

grep, egrep, 基本正则表达式及扩展表达式学习及用法

讲grep与egrep之前,我们先要知道grep与egrep是两种文本搜索工具.而文本搜索类工具就是根据用户指定的"模式(pattern)"对目标文本进行过滤,显示被模式匹配到的行. 正则表达式其定义:由一类字符书写的模式,其中有些字符不表示字符的字面意义,而是表示控制或通配的功能:(Global search REgular expression and Print out the line.) 正则表达式分类: 基本正则表达式(grep) 扩展正则表达式(egrep) 正则表达式的

grep, egrep, 基本正则表达式及扩展表达式;

什么是正则表达式? 正则表达式就是处理字符串的方法,它是以行为单位来进行字符串的处理行为,正则表达式通过一些特殊符号辅助,可以让用户轻易达到查找.删除.替换某特定字符串的处理程序. 正则表达式对Linux系统管理员工作有什么帮助? 通常情况下,由于系统在繁忙的情况下,每天产生的信息会多到你无法想象的地步,系统管理员需要每天去看很多的数据信息,从千百行的数据中找个出一行有问题的信息,难度太大! 这时,我们就可以通过正则表达式的功能,仅仅取出有问题的信息进行分析.如此,系统管理工作将会更加容易: g

正则表达式和扩展表达式

1:通配符,匹配的是文件名的字符串,  正则表达式,匹配的是文内容的字符 2:正则表达式  基本正则表达式  :BRE 扩展正则表达式:ERE 元字符分类:字符匹配,匹配次数,位置锚定,分组 man   7regex  可以查询它的帮助 3:基本正则表达式元字符 . 匹配任意单个字符      []  匹配指定范围内的任意单个字符 [:alnum:]字母和数字       [:alpha:]代表任何英文大小写字符亦即A-Z,a-z          [:lower:]小写字母     [:upp

grep的基本正则表达式及扩展表达式

grep 全名为 全面搜索正则表达式并把行打印出来(global search regular expression) grep搜索以 FILE 命名的文件输入 (或者是标准输入,如果没有指定文件名,或者给出的文件名是 - 的话),寻找含有与给定的模式 PATTERN(正则表达式) 相匹配的内容的行.默认情况下, grep 将把含有匹配内容的行打印出来. 另外,也可以使用两个变种程序 egrep 和 fgrep . Egrep 与 grep -E 相同. Fgrep 与 grep -F 相同 g

Linux正则表达式——基础篇

一.什么是正则表达式 简单地说,正则表达式就是处理字符串的方法,它是以行为单位进行字符串的处理行为,正则表达式通过一些特殊符号的辅助,可以让用户轻易达到查找.删除.替换某特定字符串的处理程序. 正则表达式基本上是一种"表示法",只要工具程序支持这种表示法,那么该工具程序就可以用来作为正则表达式的字符串处理之用.例如:vi,grep,awk,sed 正则表达式的字符串表达方式依照不同的严谨度而分为基础正则表达式与扩展表达式,扩展表达式除了简单的一组字符串处理外,还可以做组的字符串处理.

linux当中的正则/扩展表达式(grep篇)

正则表达式在linux当中我们去使用shell脚本的时候经常会用到正则表达式,所以整理一些我们会用到的表达式,以便提升shell脚本能力 一.正则表达式(1)通过grep命令实践正则表达式比如我们去过滤带有bbb字段的行,直接可以通过grep "xx" file去获取到 [[email protected] ~]# cat test1 aaa bbb ooo cccc dddd eeee fffff ggggg hhhhh bbbbb kkkkk pppppp ssssss xxxxx