在正文开始之前向大家介绍一个在线的很好用的正则表达式规则测试的网站     https://regex101.com/

本文简要介绍Shell编程中正则表达式的相关内容,所谓正则表达式(regular expression)是指一种字符串匹配的模式(pattern),其可以用来检查一个串是否含有某种子串、将匹配的子串替换或者从某个串中取出符合某个条件的子串等。值得一提的是,不同的编程语言的正则表达式大同小异,但略有不同。

对正则表达式进行详细展开前首先要明确其与通配符的不同:

  • 正则表达式用来在文件中匹配符合条件的字符串,其属于包含匹配。所谓包含匹配是指当某一行内容中包含符合正则表达式的字符串时,该行能够被筛选出来,因此当正则表达式更详细时,筛选出的内容更为具体。grep、awk、sed等命令可以支持正则表达式。
  • 通配符一般用来匹配符合条件的文件名,通配符是完全匹配。ls、cp、find这些命令不支持正则表达式,所以只能使用shell自己的通配符来进行匹配。
  • 一般可以认为,正则表达式用于字符串匹配,即文件内容的匹配,而通配符用于文件名的匹配,两者的相同符号具有不同的含义

了解了正则表达式与通配符的不同之后,正式进入正则表达式的学习,有关正则表达式的一些基础规则(部分规则)如下

元字符 作     用
* 前一个字符匹配0次或任意多次
. 匹配除了换行符外任意一个字符
^ 匹配行首。例如^hello会匹配以hello开头的行
$ 匹配行尾。例如hello$会匹配以hello结尾的行
[] 匹配中括号中指定的任意一个字符,只匹配一个字符。
例如[aoeiu]匹配任意一个元音字母,[0-9]匹配任意一位数字,[a-z][0-9]匹配小写字母和一位数字构成的两位字符
[^] 匹配除中括号的字符以外的任意一个字符。例如[^0-9]匹配任意一位非数字字符,[^a-z]表示任意一位非小写字母
\ 转义符。用于取消特殊符号的含义
\{n\} 表示其前面的字符恰好出现n次。例如[0-9]\{4\}匹配4为数字
\{n,\} 表示其前面的字符出现不小于n次。例如[0-0]\{2,\}表示两位及以上的数字
\{n,m\} 表示其前面的字符至少出现n次,最多出现m次。例如:[a-z]\{6,8\}匹配6-8位的小写字母

为更具体的说明正则表达式的匹配规则,编写了测试文件regex_test.txt,内容如下

This is a txt file about regex rule.For test regex rule,i try to write this file.Maybe there are some wrong words because of testing.saidsoldsaaaid555nicenic55e

以上述文件为基础,对正则表达式的规则作出以下测试

  • "*"

    • grep "a*" regex_test.txt
    • 匹配所有内容,包括空白行
    • grep "aa*" regex_test.txt
    • 匹配至少一个a的行
[root@localhost tmp]# grep "a*" regex_test.txt
This is a txt file about regex rule.For test regex rule,i try to write this file.Maybe there are some wrong words because of testing.saidsoldsaaaid555nicenic55e
[root@localhost tmp]# grep "aa*" regex_test.txt
This is a txt file about regex rule.
Maybe there are some wrong words because of testing.
said
saaaid
  • "."

    • grep "s..d" regex_test.txt
    • 匹配在s和d之间一定有两个字符的字符串
    • grep "s.*d" regex_test.txt
    • 匹配在s和d之间有任意字符的字符串
[root@localhost tmp]# grep "s..d" regex_test.txt
said
sold
[root@localhost tmp]# grep "s.*d" regex_test.txt
Maybe there are some wrong words because of testing.
said
sold
saaaid
  • "^"  "$" "\"

    • grep "^M" regex_test.txt
    • 匹配以大写M开头的行
    • grep "\.$" regex_test.txt
    • 匹配以.结尾的行
    • grep -n "^$" regex_test.txt
    • 匹配空白行并显示行号
[root@localhost tmp]# grep "^M" regex_test.txt
Maybe there are some wrong words because of testing.
[root@localhost tmp]# grep "\.$" regex_test.txt
This is a txt file about regex rule.
For test regex rule,i try to write this file.
Maybe there are some wrong words because of testing.
[root@localhost tmp]# grep -n "^$" regex_test.txt
2:
4:
6:
8:
10:
12:
14:
  • "[]"

    • grep "s[ao]id" regex_test.txt
    • 匹配字母s和字母串id中,要不为a,要不为o
    • grep "[0-9]" regex_test.txt
    • 匹配任意一个数字
    • grep  "^[0-9]" regex_test.txt
    • 匹配以数字开头的行
[root@localhost tmp]# grep "s[ao]id" regex_test.txt
said
[root@localhost tmp]# grep "[0-9]" regex_test.txt
555nice
nic55e
[root@localhost tmp]# grep "^[0-9]" regex_test.txt
555nice
  • "[^]"

    • grep "^[^a-z]" regex_test.txt
    • 匹配不用小写字母开头的行
    • grep "^[^a-zA-Z]" regex_test.txt
    • 匹配不用字母开头的行
[root@localhost tmp]# grep "^[^a-z]" regex_test.txt
This is a txt file about regex rule.
For test regex rule,i try to write this file.
Maybe there are some wrong words because of testing.
555nice
[root@localhost tmp]# grep "^[^a-zA-Z]" regex_test.txt
555nice
  • "\{n\}" "\{n,\}" "\{n,m\}"

    • grep "[0-9]\{3\}" regex_test.txt
    • 匹配包含3个连续数字的字符串
    • grep "[0-9]\{2,\}" regex_test.txt
    • 匹配最少连续两个数字的字符串1
    • grep "sa\{1,3\}id" regex_test.txt
    • 匹配s和id之间至少有一个a至多有3个a的字符串
[root@localhost tmp]# grep "[0-9]\{3\}" regex_test.txt
555nice
[root@localhost tmp]# grep "[0-9]\{2,\}" regex_test.txt
555nice
nic55e
[root@localhost tmp]# grep "sa\{1,3\}id" regex_test.txt
said
saaaid

本篇博客只包含Shell编程的部分正则表达式规则,其余例如"?","+"等在后续博客中更新

Shell编程-正则表达式及正则表达式在线测试网站相关推荐

  1. 【Linux系统管理】10 Shell 编程进阶篇

    六 Shell 编程 6.1 正则表达式 6.1.1 概述 还记得我们在上一章说过正则表达式和通配符的区别(正则表达式用来在文件中匹配符合条件的字符串,通配符用来匹配符合条件的文件名)吗?其实这种区别 ...

  2. 超级详细的 shell编程知识讲解 —— 第二部分(全文3万多字,看完之后不想成为高手也难!)

    文章目录 写在开头的话 shell 编程进阶 00. 正则表达式 0.1 概述 0.2 基础正则表达式 0.3 扩展正则表达式 01.字符截取和替换命令 1.1 `cut` 列提取命令 1.2 `aw ...

  3. Linux脚本保存管道中的变量,Linux下管道重定向使用以及Shell编程(操作系统)

    实验名称:Linux的基本操作 实验目的: 1.了解管道和重定向 2.熟悉基本的Linux脚本的编写 实验环境:Ubuntu 12.4(32位,简体中文) 实验内容: 1.将当前用户目录下的文件清单输 ...

  4. Linux高级专题详解--shell编程大全(shell变量,if语句,case语句,for循环,while循环,函数调用,数组,正则表达式,shell脚本三剑客--grep,sed,awk家族)

    shell编程 初始shell 程序 语言 编程 ---------------------------------- 语言 自然语言:汉语.英语 计算机语言:c语言.c++.(java php py ...

  5. 正则表达式,VI,SED及shell编程2010-12-05

    一. 1.查看文件 cat more/less head  -n 查看文件首部n行 tail -n 查看文件尾部n行  -f 不关闭文件,等待显示新增进的内容(经常用来查看处于增长阶段的日志信息)ct ...

  6. shell编程之正则表达式

    shell编程之正则表达式 文章目录 shell编程之正则表达式 正则表达式 1. 正则表达式是什么? 2. 正则能干什么? 3. 正则当中名词解释 4. 第一类正则表达式 ㈠ 正则中普通常用的元字符 ...

  7. shell编程之正则表达式——理论基础

    目录 前言 一.基础正则表达式 1.1 正则表达式的定义 1.2 正则表达式用途 1.3 基础正则表达式 1.4 基础正则表达式:grep命令 1.4.1 查找特定字符 1.4.2 利用中括号&quo ...

  8. Shell编程之正则表达式(及操作案例)

    Shell 编程之正则表达式 正则表达式 1.正则表达式定义 正则表达式又称正规表达式.常规表达式.在代码中常简写为 regex.regexp 或 RE.正则表达式是使用单个字符串来描述.匹配一系列符 ...

  9. 独一无二 Shell 编程之正则表达式 与文本处理器 详细解释

    技能展示: 基础正则表达式 扩展正则表达式 sed 工具使用方法 awk 工具使用方法 4.1 正则表达式 之前学习了 Shell 脚本的基础用法,已经可以利用条件判断.循环等语句编辑 Shell 脚 ...

  10. shell编程之正则表达式与总结(grep,egrep)

    文章目录 前言 一:基础正则表达式 1.1:正则表达式的定义 1.2:正则表达式用途 1.3:基础正则表达式 1.4:grep命令 1.4.1:查找特定字符 1.4.2:利用中括号"[]&q ...

最新文章

  1. android preference tab,Android SharedPreference - TabHost问题
  2. 贪心算法之买卖股票的最佳时机 II
  3. linux tar.xz的解压方法
  4. css img重复_20 个 CSS 快速提升技巧
  5. canva画图 图片居中裁剪_css实现不定宽高的图片img居中裁剪_类似微信朋友圈图片效果...
  6. qldump 备份所有表_MySQL中的备份和恢复是怎样执行的?
  7. php mysql增修删_PHP mysql PDO增、删、查、改
  8. android四大组件的作用简书,Android四大组件是什么
  9. 超级计算机子系统,大规模并行巨型机的并行I/O子系统
  10. java个人博客系统源码_Java基于SSM的个人博客系统(源码 包含前后台)
  11. (转载)Android开发者必知的开发资源
  12. sklearn安装包下载
  13. IDEA安装Yapi插件
  14. Java数组、集合、散列表常见算法浅析
  15. 橡胶软接头的安装及使用说明
  16. 台式机怎么开启 无线lan服务器,台式机没有无线网卡怎么样实现上网
  17. 台式计算机有线无线网卡设置,台式电脑怎么设置无线网络,详细教您台式电脑怎么设置无线网络...
  18. SCI论文的构思与常用结构
  19. outlook2013升级_Microsoft Outlook 2013入门指南
  20. java实现轮播图片_Banner框架实现图片轮播

热门文章

  1. 逆水寒捏脸服务器维护,逆水寒捏脸数据分享_全职业捏脸数据一览
  2. Android Botton 事件
  3. 回溯法采用的搜索策略_下面哪种函数是回溯法中为避免无效搜索采取的策略( )...
  4. ServerPropertiesAutoConfiguration.class cannot be opened because it does not exist
  5. 魔兽linux版本,linux下玩warcraft III(魔兽)
  6. 最新影视双端app对接苹果cms+详细安装教程
  7. 定时删除虚拟服务器快照,ESXi6.0 设置自动删除快照脚本及计划任务
  8. 代码随想录第十八天 LeetCode513、112、113、106、105
  9. 系统上电后 bootloader的执行流程
  10. 乔家大院的5A牌子被摘了,但且别急着叫好