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:词尾锚定;用于表示单词的模式的右侧;

^$: 空白行;我们使用管道和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:词尾锚定;用于表示单词的模式的右侧;

^$: 空白行

分组:()

后向引用:\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和用户一样的用户

扩展表达式

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

1、显示当前系统上root、centos或user1用户的默认的shell和UID;

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

3、使用echo输出一个路径,而后egrep找出其路径基名;

进一步地:使用egrep取出其目录名;

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

linux 模式表达式,linux正则表达式和扩展表达式相关推荐

  1. 学习 Linux,101: 使用正则表达式搜索文本文件

    学习 Linux,101: 使用正则表达式搜索文本文件 概述 本文深入介绍基础的 Linux 进程管理技术.您将学习如何: 创建简单的正则表达式 使用正则表达式搜索文件和文件系统 使用正则表达式和 s ...

  2. python带通配符的字符串匹配_Bash技巧:实例介绍数个参数扩展表达式以处理字符串变量...

    Linux 的 bash shell 提供了多种形式的参数扩展表达式,可以获取变量自身的值,或者对变量值进行特定处理得到一个新的值,等等. 本篇文章对字符串变量值相关的参数扩展表达式进行汇总说明. 假 ...

  3. Linux基础知识:正则表达式

    什么是正则表达式? 我理解的正则表达式就是用来匹配字符串的一种方法.通过一种规则去帮助用户更快捷的达到查找的目的. 对于系统管理员来说,正则表达式是非常重要的.因为在系统每天都会产生相当多的信息,比如 ...

  4. linux内核能否扩展,Linux内核用到的GCC扩展

    GNC CC是一个功能非常强大的跨平台C编译器,它对C 语言提供了很多扩展,这些扩展对优化.目标代码布局.更安全的检查等方面提供了很强的支持.本文把支持GNU 扩展的C 语言称为GNU C. Linu ...

  5. Linux逻辑运算优先级,linux中的逻辑运算和正则表达式

    1.与.或.非.异或 && 与:当两边同为真的时候,结果为真 || 或:当两边都为假的时候,结果为假. ! 非:取反 ^ 异或:当左右都相同的时候,结果为假:当左右不相同的时候,结果为 ...

  6. linux用shell写正则表达式,Linux命令行与Shell脚本编程大全-shell正则表达式

    本章内容: 定义正则表达式 了解基本正则表达式 扩展正则表达式 创建正则表达式 定义正则表达式 正则表达式是你定义的.Linux工具用来过滤文本的模式模板.正则表达式模式利用通配符来代表数据流中的一个 ...

  7. linux命令 正则表达式,详解Linux命令中的正则表达式

    详解Linux命令中的正则表达式 Mark Do 2017年9月19日 暂无评论 阅读 981 次 命令中的正则表达式 如果要在命令输出或文本中筛选内容时使用模糊查找,就需要使用正则表达式.正则表达式 ...

  8. 使用正则把数字前面的符号替换_正则表达式(一) 基本表达式

    定义 正则表达式(Regular Expression) 用某种模式去匹配一类字符串的公式,主要用来描述字符串匹配的工具. 匹配 文本或字符存在不止一个部分满足给定的正则表达式,这是每一个这样的部分都 ...

  9. Linux中的shell正则表达式详解

    Shell中使用正则表达式处理文本的命令有如下工具: 命令 描述 grep 默认不支持扩展表达式,加-E选项开启ERE.如果不加-E,此时使用花括号时要加转义符:\{\} egrep 支持基础和扩展表 ...

最新文章

  1. Android调用前置摄像头的方法
  2. NumericUpDown 控件输入限制小数位
  3. 职高学的计算机单招考试能换专业吗,2020年湖南中专生单招考大专能换专业吗?...
  4. 新装ubuntu10.04后的一些设置
  5. Docker container与宿主进程相互隔离的实现原理
  6. mirna富集分析_经验之谈丨生信分析文章套路原来这么简单!
  7. java中的函数指的是,函数式接口在Java中是指有且仅有一个抽象方法的接口。( )...
  8. Appium脚本(2):元素检测
  9. xposed框架android9.0,xposed仓库商店下载
  10. 什么是 CDN 边缘服务器 - Edge Server
  11. 计算机论文刊物发表,计算机论文发表流程
  12. WeaveSocket框架-Unity太空大战游戏-概述0
  13. C++快速入门学习笔记(二)
  14. 读计算机带笔记本还是台式,选台式机还是选笔记本?这里有点心得告诉你
  15. 真正的骨传导耳机有哪些品牌、性价比高的骨传导耳机排名
  16. 例题5.23 蚂蚁 LA4043
  17. DIY单片机串口打印函数print
  18. PageIndicatorView
  19. Git的下载、安装与配置
  20. 刘润年度演讲2022:进化的力量(演讲全文)

热门文章

  1. ssm mysql动态分页_SSM项目手动分页详解
  2. oracle如何复制dept,[oracle]表复制的sql语句
  3. access开发精要(15)-货币与数字类型格式(3)
  4. 【Python】感觉是全网最详细Pandas合并数据集操作总结
  5. 【职场建议】开发转算法,我们应该如何准备(过来人的肺腑之言)
  6. Yoshua Bengio等图神经网络的新基准Benchmarking Graph Neural Networks(代码已开源)
  7. 在线阅读!!机器学习数学精华:线性代数
  8. 如何应对“吴恩达:人工智能落地最重要的挑战之一是小数据”的困境?
  9. Python入门实战题目
  10. 泛娱乐迎来善变的95后Z世代 技术从拐杖变为核心引擎