如果在shell脚本中处理数据文件,那么我们就必须熟悉正则表达式。正则表达式是用来过滤数据流中文本的模式模板,模式由标准文本字符和特殊字符组成。正则表达式用特殊字符来匹配一系列一个或多个字符,要想掌握正则表达式,必须深刻认识每个特殊字符:

.*^${}+?|()下面分别解释一下:

脱字符 ^ 定义从数据流中文本行的行首开始的字符;

美元符 $ 指明数据必须以该文本模式结尾;

点字符 . 用来匹配任意单字符,除了换行符;

字符组 [Yy] 用来匹配字符组中某个字符(比如y,但不清楚其大小写)出现在数据流中;

排除字符组 [^ch] 用来排除字符组中出现过字符(比如ch)的文本;

区间 [0-9] 用来匹配区间内任意字符(比如0-9间的数字);

星号 * 在字符后放置星号说明该字符将会在匹配模式中出现0次或多次;

问号 ? 表明前面的字符可以出现0次或1次;

加号 + 表明前面的字符可以出现1次或多次;

花括号 {} 允许为可重复的正则表达式指定一个上限(比如{m}正则表大会出现m次,{m,n}正则表达式至少出现m次,至多n次)。

好了,多说无益,举几个例子先体会一下:

a.目录文件计数

b.解析E-mail地址

E-mail地址的基本格式为: username@hostname

c.获取本机IP地址

[shell编程]正则表达式的更多相关文章

  1. Shell 编程 正则表达式

    本篇主要写一些shell脚本正则表达式的使用基础. 概述 正则表达式分为基础正则表达式(Regular Expression)与扩展正则表达式(Extended Regular Expression) ...

  2. linux笔记:shell编程-正则表达式

    正则表达式与通配符(正则表达式匹配字符串,是包含匹配:通配符匹配文件名,是完全匹配.): 基础正则表达式: 正则表达式示例:

  3. Linux学习 -- Shell编程 -- 正则表达式

    正则表达式与通配符 正则 -- 匹配字符串 -- 包含匹配     grep.awk.sed等 通配符 -- 匹配文件名 -- 完全匹配  ls.find.cp等 基础正则表达式

  4. Shell编程—正则表达式

    1什么是正则表达式 1.1定义 正则表达式是你所定义的模式模板,Linux工具可以用它来过滤文本.Linux 工具(比如sed编辑器或gawk程序)能够在处理数据时使用正则表达式对数据进行模式匹配. ...

  5. Linux学习——shell编程之正则表达式和字符处理命令

    shell编程之正则表达式 一 正则表达式 1 什么是正则表达式 正则表达式用于描述字符排列和匹配模式的一种语法规则.它主要用于字符串的模式分隔.匹配.查找及替换操作. 2 shell编程之正则表达式 ...

  6. 第5天(半天)【shell编程初步、grep及正则表达式】

    第5天(半天)[shell编程初步.grep及正则表达式] shell编程初步(01)_recv shell脚本:文本文件 #!:/bin/bash #!:/usr/bin/python #!:/us ...

  7. 05 shell编程之正则表达式

    正则表达式&&文本处理利器 学习目标: l  掌握正则表达式的运用 l  掌握sed.awk文本处理工具的使用 目录结构:   正则表达式 正则表达式概述 l  正则表达式:使用单个字 ...

  8. Linux学习笔记(17) Shell编程之基础

    1. 正则表达式 (1) 正则表达式用来在文件中匹配符合条件的字符串,正则是包含匹配.grep.awk.sed等命令可以支持正则表达式:通配符用来匹配符合条件的文件名,通配符是完全匹配.ls.find ...

  9. Linux Shell编程入门

    从程序员的角度来看, Shell本身是一种用C语言编写的程序,从用户的角度来看,Shell是用户与Linux操作系统沟通的桥梁.用户既可以输入命令执行,又可以利用 Shell脚本编程,完成更加复杂的操 ...

随机推荐

  1. BMP文件格式分析

    前两天要做一个读取bmp文件的小程序,顺便查找了一些关于BMP格式的文章,现在post上来. 简介 BMP(Bitmap-File)图形文件是Windows采用的图形文件格式,在Windows环境下运 ...

  2. Cadence OrCad Allegro SPB 16.6 下载及安装破解指南

    Cadence公司的电子设计自动化产品涵盖了电子设计的整个流程,包括系统级设计,功能验证,IC综合及布局布线,模拟.混合信号及射频IC设计,全定制集成电路设计,IC物理验证,PCB设计和硬件仿真建模等 ...

  3. memory model

    最近看C++11 atomic发现对memory_order很是不理解,memory_order_relaxed/memory_order_consume/memory_order_acquire/m ...

  4. [大牛翻译系列]Hadoop(3)MapReduce 连接:半连接(Semi-join)

    4.1.3 半连接(Semi-join) 假设一个场景,需要连接两个很大的数据集,例如,用户日志和OLTP的用户数据.任何一个数据集都不是足够小到可以缓存在map作业的内存中.这样看来,似乎就不能使用 ...

  5. SpringUtil

    /** SpringUtil.java {{IS_NOTE Purpose: Description: History: Thu Jun 1 13:53:53 2006, Created by hen ...

  6. Oracle 表的连接方式(1)-----Nested loop join和 Sort merge join

    关系数据库技术的精髓就是通过关系表进行规范化的数据存储,并通过各种表连接技术和各种类型的索引技术来进行信息的检索和处理. 表的三种关联方式: nested loop:从A表抽一条记录,遍历B表查找匹配 ...

  7. Python开发【第一篇】Python基础之函数递归

    函数递归 递归的本质: 就是一个函数调用另外一个函数. def d(): return '123' def c(): r = d() return r def b(): r = c() return ...

  8. python学习第七天

    一.        subprocess 模块 1. subprocess的介绍:用来替代几个老的模块或是函数,如:os.systam,os.popen,os.spawn*,os.popen2*,co ...

  9. Linux挂载60T存储

    操作系统: CentOS 6.3 存储:总大小为72T,并划分成3个块,每块20T 安装多实例MySQL数据库,不想挂载3个块,弄成一个大的比较方便管理,个人比较懒. 配置多路径:http://blo ...

  10. elipse+pydev+python开发arcgis脚本程序

    环境配置参考:http://www.cnblogs.com/halfacre/archive/2012/07/22/2603848.html 添加arcpy类库.arctoolbox.arcgis-b ...