Shell 脚本正则表达式(一)

  • 一、正则表达式概述
    • 1.正则表达式定义
    • 2.正则表达式用途
  • 二、基础正则表达式
    • 1.基础正则表达式常见元字符
    • 2.基础正则表达式示例
  • 三、扩展正则表达式
    • 1.扩展正则表达式的常见元字符
    • 2.扩展正则表达式示例

一、正则表达式概述

1.正则表达式定义

正则表达式是使用单个字符串来描述,匹配一系列符合某个句法规则的字符串,简单来说,是一种匹配字符串的方法,通过一些特殊符号,实现快速查找、删除、替换某个特定字符串。 正则表达式是由普通字符与元字符组成的文字模式。

  • 普通字符: 包括那些大小写字母、苏子、标点符号以及一些其它符号。
  • 元字符: 那些在正则表达式中具有特殊意义的专用字符,可以用来规定其前导字符(即元字符前面的字符)在目标对象中出现模式。

2.正则表达式用途

正则表达式对于系统管理员来说是非常重要的,系统运行过程中会产生大量的信息,系统管理员可以通过正则表达式快速提取"有问题"的信息。如此一来,可以将运维工作变得更加简单、方便。

二、基础正则表达式

1.基础正则表达式常见元字符

元字符 作用
^ 匹配行首
$ 匹配行尾
. 匹配任意一个字符
\ 转义符,屏蔽一个元字符的特殊意义
* 重复零个或多个前面的单个字符
.* 匹配所有字符
[] 匹配字符集内的任意一个字符
[^] 不匹配字符集内的任意一个字符。中括号里的 ^ 表示取反
a\{1\} 匹配前面的 (a) 字符出现 (1) 次。若用 egrep 可以去掉斜线。
a\{1,\} 匹配前面的 (a) 字符至少出现 (1) 次。若用 egrep 可以去掉斜线。
a\{,2\} 匹配前面的 (a) 字符最多出现 (2) 次。若用 egrep 可以去掉斜线。
a\{1,2\} 匹配前面的 (a) 字符出现 (1~2) 次。若用 egrep 可以去掉斜线。

2.基础正则表达式示例

1)查找特定字符

命令 作用
-n 显示行号
-i 不区分大小写
-v 反向查找

创建测试文件

[root@localhost ~]# vim test.txt
he was short and fat.
He was wearing a blue polo shirt with black pants.
The home of Football on BBC Sport online.
the tongue is boneless but it breaks bones.12!
google is the best tools for search keyword.
The year ahead will test our political establishment to the li
PI=3.141592653589793238462643383249901429
a wood cross!
Actions speak louder than words#woood #
#woooooood #
AxyzxyzxyzxyzC
I bet this place is really spooky late at night!
Misfortunes never come alone/single.
I shouldn't have lett so tast.

查找 the 并显示行号

[root@localhost ~]# grep  -n  'the' test.txt


查找 the 并不区分大小写

[root@localhost ~]# grep  -ni  'the' test.txt


反向查找不包含 the 的行

[root@localhost ~]# grep -nv 'the' test.txt


2)利用中括号 [ ] 来查找集合字符

  • [ ]:里面无论有多少字符,都代表一个字符,为 的关系。
  • [^ ]:括号里面的 ^取反 的意思。

查找包含 shirt 和 short 的行

[root@localhost ~]# grep -n 'sh[io]rt' test.txt


查找重复单个字符 oo 的行

[root@localhost ~]# grep -n 'oo' test.txt


查找 oo 前面不是 w 的行

[root@localhost ~]# grep -n '[^w]oo' test.txt


查找 oo 前面不是小写字母的行

[root@localhost ~]# grep -n '[^a-z]oo' test.txt


查找 oo 前面不是大写字母的行

[root@localhost ~]# grep -n '[^A-Z]oo' test.txt


查找包含数字的行

[root@localhost ~]# grep -n '[0-9]' test.txt


3)查找行首 ^ 与行尾字符 $

  • 小数点 . 在正则表达式中为元字符,需要使用转义字符 \ 将其转化为普通字符。

查找以小数点 . 结尾的行

[root@localhost ~]# grep -n '\.$' test.txt


查找空行

[root@localhost ~]# grep -n '^$' test.txt


4)查找任意一个字符用 .,重复字符用 *

  • *:表示重复零个或多个前面的单个字符。

查找以 w 开头,d 结尾共 4 个字符的行

[root@localhost ~]# grep -n 'w..d' test.txt


查询至少包含两个 o 以上的字符串

[root@localhost ~]# grep -n 'ooo*' test.txt


查找以 w 开头,中间至少包含一个 o 的,d 结尾的行

[root@localhost ~]# grep -n 'woo*d' test.txt


查找以 w 开头,d 结尾,中间字符可有可无的行

[root@localhost ~]# grep -n 'w.*d' test.txt


查询任意数字的行

[root@localhost ~]# grep -n '[0-9][0-9]*' test.txt


5)查找连续字符范围 {}

  • 使用 .* 可以设置零个或无限个重复的字符。
  • 但如果要限制一个范围则使用 {}

查看 2 个 o 的字符

[root@localhost ~]# grep -n 'o\{2\}' test.txt


查看以 w 开头,d 结尾,中间为 2,5 个 o 的字符串

[root@localhost ~]# grep -n 'wo\{2,5\}d' test.txt

三、扩展正则表达式

1.扩展正则表达式的常见元字符

元字符 作用
+ 重复一个或者一个以上的前一个字符;等同于 a\{1,\}
? 重复零个或者一个的前一个字符;等同于 a\{,2\}
或者的意思,用或的方式查找多个符合的字符串
() 找出括号内的字符串
()+ 辨别多个重复的组

2.扩展正则表达式示例

[root@localhost ~]# egrep -n 'wo+d' test.txt
执行该命令即可查询到"wood","woood","wooooood"等字符串

[root@localhost ~]# egrep -n 'bes?t' test.txt
执行该命令即可查询到"bet""best"这两个字符串

[root@localhost ~]# egrep -n 'of|is|on' test.txt
执行该命令即可查询到"of",或者"is",或者"on"字符串

[root@localhost ~]# egrep -n 't(a|e)st' test.txt
"tast"与"test"因为这两个单词的"t"与"st"是重复的,所以将"a"与"e"列入"()"符号当中,并以"|"分隔,即可查询"tast"或者"test"字符串

[root@localhost ~]# egrep -n 'A(xyz)+C' test.txt
该命令是查询开头的"A"结尾是"C",中间有一个以上的"xyz"字符串的意思

Shell 脚本正则表达式(一)相关推荐

  1. shell脚本——正则表达式(包含grep详细介绍及应用)

    正则表达式 正则表达式的作用 前言案例:使用^和$判断用户输入的是否是数字 基础正则表达式元字符 基础正则表达式元字符案例 扩展正则表达式元字符 扩展正则表达式元字符案例 正则表达式元字符综合案例 三 ...

  2. Shell 脚本--------正则表达式的认知

    正则表达式 正则表达式分为基础正则表达式与扩展正则表达式,它不是一个工具程序,而是一个字符串处理的标准依据,是使用单个字符串搜索.匹配一系列符合某个语法规则的字符串. 正则表达式的定义 正则表达式又称 ...

  3. shell脚本----正则表达式

    文章目录 一.什么是正则表达式 二.正则表达式的使用 一.什么是正则表达式 正则表达式是由普通字符与元字符组成: 普通字符 包括大小写字母.数字.标点符号及一些其他符号. 元字符 是指在正则表达式中具 ...

  4. shell脚本之正则表达式

    shell脚本正则表达式 一.正则表达 1.1 正则表达式定义 1.1.1正则表达式组成 1.1.2 作用 1.2 基础正则表达式元字符 二.正则表达式相关命令 2.1 grep命令 2.2 cut ...

  5. shell脚本详解(七)——正则表达式、sort、uniq、tr

    shell脚本详解(七)--正则表达式.sort.uniq.tr 一.排序命令--sort 1.格式 2.常用选项 3.示例 二.去除重复行操作命令--uniq 1.格式 2.常用选项 3.示例 三. ...

  6. Shell脚本之正则表达式以及文本编辑器

    目录 一.正则表达式 1.定义 2.元字符 元字符使用(这里举例为常用的元字符) 3.表示次数 (1)匹配字符 (2)查看子网掩码信息 4. 位置锚定 5.扩展正则表达式 (1)表示次数 (2)表示分 ...

  7. 详解Shell脚本:正则表达式

    正则表达式的概念 正则表达式:使用单个字符串来描述.匹配一系列符合某个句法规则的字符串 由普通字符与特殊字符组成,一般用在脚本编程.文本编辑器中,如php.python.she等,简写为regex.r ...

  8. 七:Shell脚本:正则表达式与文本处理器三剑客grep,egrep, sed,awk

    正则表达式定义 正则表达式,又称正规表达式.常规表达式 使用字符串来描述.匹配一系列符合某个规则的字符串 ●正则表达式组成 ◆普通字符 大小写字母.数字.标点符号及一些其他符号 ◆元字符 在正则表达式 ...

  9. shell脚本实操学习之函数、正则表达式

    shell脚本实操学习之函数.正则表达式 shell函数 函数介绍 函数语法 函数应用 正则表达式 正则表达式介绍 特殊字符 POSIX字符 shell函数 函数介绍 在写代码的时候,我们很多人习惯从 ...

最新文章

  1. 如何将java web项目上线/部署到公网
  2. retinaface 改进
  3. js,jq设置获取属性,样式
  4. 使用Google、百度等搜索引擎完全匹配指定内容搜索
  5. cad在哪里设置图幅大小_一看就懂!菜鸟也能快速入门CAD,关键掌握这4个诀窍...
  6. Resharper 的快捷键
  7. 【洛谷 T47488】 D:希望 (点分治)
  8. Android开发学习:在Eclipse中导入Android项目方法
  9. 使用 bat 文件管理计算机服务
  10. Addressable系统的加载资源API总结
  11. 可以用树结构表达版本号
  12. Ubuntu下Apache+SVN搭建SVN服务多项目管理
  13. Fusion360删除圆角,把圆角变回直角/Remove Fillets
  14. Android中JNI调用过程简述
  15. Oracle函数之listagg函数
  16. 从B 树、B+ 树、B* 树
  17. 小米平板4软件提取包_小米三大法宝:软件、硬件和服务;以及他的4条成功经验|小米手机|智能手机|手机...
  18. NEW RDSP MODE I (模拟,循环节)
  19. 猪猪的机器学习(十九)卷积神经网络
  20. Android blueZ HCI(二):hcitool hcidump常用方法

热门文章

  1. 计算机视觉方向简介 | 驾驶员监控DMS
  2. Java 浅拷贝和深拷贝的理解和实现方式
  3. 【全局地图mapping】二维全局地图的开源方案及对比--gmapping、hector、karto、cartographer
  4. vue 所有dom加载完毕后操作dom节点
  5. https证书过期时间应该怎么处理
  6. 嵌入式微处理器的分类有哪些?
  7. 将秒针声音加入JAVA,喜马拉雅联合秒针系统发布声音流广告报告 :“好声音”将不再是打扰...
  8. STM32项目 -- 选题分享(2)(部分)
  9. SONET、SDH、POS简介
  10. js视频封面(截帧)