Shell编程之---正则表达式详解

正则表达式详解

普通字符:只是字面的意思

元字符:超过字面意思的意义

基本正则表达式元字符及其意义

* #0个或多个在*字符之前的那个普通字符

.               #匹配任意字符

^         #匹配行首

$        
#匹配行尾

$$
#执行上一条命令

!$
#上一条命令的最后一个参数,例如是/etc/passwd,继续对该参数操作,可以为 cat !$

[]      
 #匹配字符集合

\        
 #转义符

\{n\}    
 #匹配前面字符出现n次

\{n,\}    
#匹配前面字符至少出现n次

\{n,m\}  
 #匹配前面字符出现n-m次

示例

*  hel*o                #可以匹配helll8o、hello、hellllo

.  ...73.         
   #可以匹配abc73.、[email protected]#73?、12373c

^  ^...X86*      
   #可以匹配以abcX86fang开头的字符

$  make$      
   #表示以make结尾

^$              
   #表示空行

^.$      
               #表示某行只有一个字符

[a-z]          
   #表示a-z所有小写字母

[0-9]           
   #表示0-9所有数字

[b-q]                    #表示b-q字母

[^b-q]                  #取反,除了b-q的所有字符

[A-Za-z] [A-Za-z]*      #能匹配任何一个英文单词

\*             
    #将\后面的元字符转换为字面意思

\<the\>          
    #精确匹配,只匹配the字符的单词,利用\符号屏蔽<>符号   grep ‘\<the\>‘

\{n\}            
    #JO\{3\}B    匹配值为JOOOB

\{n,\}             
    #JO\{3,\}B   匹配值为JOOOB JOOOOB JOOOOOOOB

\{n,m\}    
      #JO\{3,6\}B 匹配值为JOOOB JOOOOOB JOOOOOOB

[a-z] \{5\}      
    #hello house whowh 精确匹配5个小写字母

echo [abc]*      
    #开头为a/b/c的任意多字符的文件

echo [^abc]*         #开头不是a/b/c的任意多字符的文件

touch {a,b,c}-{1,2,3}    #通过穷举来创建文件,每个文件匹配来创建,总共9个文件

!$      
    #上一条命令中的最后一个参数

;      
    #表示命令结束

===========================================================================

扩展正则表达式元字符及其意义

?    #匹配0个或1个在其之前的那个普通字符

+    
 #匹配1个或多个在其之前的那个普通字符

()        #表示一个字符集合或用在expr中

|       
   #表示或,匹配一组可选的字符

?  JO?B  
#匹配JO1B [email protected] JO!B ,只匹配一个字符。如果是JOB或JOOOB则不匹配

+  S+EU  
#至少匹配前面的字符1次,可以匹配多次

*  S*U   #可匹配S123U SSUU [email protected]#U SU

()符号和|符号  re(a|e|o)d  #匹配read reed reod

示例

1、列出所有以.awk结尾的文件

ll *.awk

2、列出以0开头,后面跟一个字符且以.pem为后缀的文件

ll 0?.pem

3、列出在a-h范围内以字母开头并以.awk结尾的文件

ll [a-h]*.awk

4、列出以a-h范围内字母开头且句点后不是以.awk结尾的文件

ll [a-h]*.[^awk]*

5、列出满足在a-h范围内以字母开头并以.awk结尾的文件,或列出以0开头,后面跟一个字符且以.pem为后缀的文件

ll {[a-h]*.awk,0?.pem}

时间: 2024-12-28 08:35:12

Shell编程之---正则表达式详解的相关文章

shell编程之变量详解

bash中的变量的种类 1.本地变量 : 生效范围为当前shell进程;对当前shell之外的其他shell进程,包括当前shell的子shell进程均无效 变量赋值: name='value' 使用引用value: (1) 直接写字符 name="root" (2)变量引用 name="$USER" (3)命令引用 name=`command`,name=$() 变量引用: ${name},$name 显示已定义的所有变量: set 删除变量: unset nam

PHP正则表达式详解(一)

前言: 半年前我对正则表达式产生了兴趣,在网上查找过不少资料,看过不少的教程,最后在使用一个正则表达式工具RegexBuddy时,发现他的教程写的非常好,可以说是我目前见过最好的正则表达式教程.于是一直想把他翻译过来. 本文是Jan Goyvaerts为RegexBuddy写的教程的译文,版权归原作者所有,欢迎转载.但是为了尊重原作者和译者的劳动,请注明出处!谢谢! 1.什么是正则表达式 基本说来,正则表达式是一种用来描述一定数量文本的模式.Regex代表Regular Express.本文将用

grep正则表达式详解及练习

grep正则表达式详解及练习 一.在学习grep正则表达式前,先了解下linux著名的文本处理三剑客: (1)grep.egrep.fgrep 文本搜索工具. (2)sed     文本编辑工具,一种流编辑器,行编辑工具. (3)awk 强大的文本分析工具,文本格式化工具,文本报告生成器. 以上三大命令均支持正则表达式,本文以grep正则表达式为例展开学习. 1.什么是正则表达式? 正则表达式(Regular Expression):由一类特殊字符及文本字符所编写的模式,其有些字符不表示其字面意

python正则表达式详解

python正则表达式详解 正则表达式是一个很强大的字符串处理工具,几乎任何关于字符串的操作都可以使用正则表达式来完成,作为一个爬虫工作者,每天和字符串打交道,正则表达式更是不可或缺的技能,正则表达式的在不同的语言中使用方式可能不一样,不过只要学会了任意一门语言的正则表达式用法,其他语言中大部分也只是换了个函数的名称而已,本质都是一样的.下面,我来介绍一下python中的正则表达式是怎么使用的. 首先,python中的正则表达式大致分为以下几部分: 元字符 模式 函数 re 内置对象用法 分组用

编程常用设计模式详解--(上篇)(工厂、单例、建造者、原型)

参考来自:http://zz563143188.iteye.com/blog/1847029 一.设计模式的分类 总体来说设计模式分为三大类: 创建型模式,共五种:工厂方法模式.抽象工厂模式.单例模式.建造者模式.原型模式. 结构型模式,共七种:适配器模式.装饰器模式.代理模式.外观模式.桥接模式.组合模式.享元模式. 行为型模式,共十一种:策略模式.模板方法模式.观察者模式.迭代子模式.责任链模式.命令模式.备忘录模式.状态模式.访问者模式.中介者模式.解释器模式. 二.设计模式的六大原则 1

iOS网络编程(六) NSURLSession详解

昨夜浏览Demo的时候,看到别人请求网络数据用的是NSURLSession,当时就在想这里什么,怎么没有用过,引起了我的好奇心,遂去百度-谷歌-官方文档一一查看,有了一定的了解,原来NSURLSession是iOS7中新的网络接口,它与咱们熟悉的NSURLConnection是并列的. 查找资料,写了一个小Demo,大家可以看看,有什么不足的地方,可以留言帮我指出来. // // HMTRootViewController.m // // // Created by HMT on 14-6-7.

linux串口编程参数配置详解

1.linux串口编程需要的头文件 #include <stdio.h>         //标准输入输出定义 #include <stdlib.h>        //标准函数库定义 #include <unistd.h>       //Unix标准函数定义 #include <sys/types.h> #include <sys/stat.h> #include <fcntl.h>          //文件控制定义 #incl

编程常用设计模式详解--(中篇)(适配器、装饰、代理、外观、桥接、组合、享元)

摘自:http://blog.csdn.net/zhangerqing/article/details/8239539 我们接着讨论设计模式,上篇文章我讲完了5种创建型模式,这章开始,我将讲下7种结构型模式:适配器模式.装饰模式.代理模式.外观模式.桥接模式.组合模式.享元模式.其中对象的适配器模式是各种模式的起源,我们看下面的图: 6.适配器模式(Adapter) 适配器模式将某个类的接口转换成客户端期望的另一个接口表示,目的是消除由于接口不匹配所造成的类的兼容性问题.主要分为三类:类的适配器

Java 正则表达式详解_正则表达式

body{ font-family: "Microsoft YaHei UI","Microsoft YaHei",SimSun,"Segoe UI",Tahoma,Helvetica,Sans-Serif,"Microsoft YaHei", Georgia,Helvetica,Arial,sans-serif,宋体, PMingLiU,serif; font-size: 10.5pt; line-height: 1.5;}