一些无稽之谈:

对于正则表达式,永远似了解不明白,看到一些代码,脚本定期,awk,sed。心里总有点虚。主要是记不住。平时又没怎么用,也就没总结了。

如今有空,决定总结一下,顺便克服一下看到shell,js这些带有正则就心虚的弱点。

打算分三篇文章来写

正文:

一般来说,正则分好几种。但基本都差点儿相同,我所了解的有 “基本正则”,“扩展正则“及”perl正则”,本文更偏向说记录“基本正则”和“扩展正则”,它们在grep,egrep,sed,awk中发挥着重要发作用。

開始正则前,先复习一下grep的一些经常使用參数:

-n ,显示行号。
-v, 反向选择
-i,忽略大写和小写

以下来始抄书了,參考《鸟哥的Linux私房菜.基础学习篇 》。先下载我们要用的文本:

http://linux.vbird.org/linux_basic/0330regularex/regular_express.txt

内容例如以下:

先来学习”基本正則表達式“





1.直接匹配

例1.分别找出含apple和is 的文本

这应该是最简单的使用正则了





2.方括号[]

[]主要是进行集合方面的匹配。使用方法我们还是用样例说明

例2匹配含有test,tast的文本

能够看出。[]就是从集合[ae]中选出一个一个来匹配





3.方括号[]与中横线-结合

对于想匹配含有一个数字的文本,我们能够写成[0123456789],但这样难免太麻烦,这就须要中横线了对于数字,能够写成[0-9], 相同,对于字母也能够应用上来,大写字母[A-Z],小写字母[a-z],也能够合在一块。如大写和小写字母[a-zA-Z].

例3,找出含有数字的文本

4.方括号[] ,-,^,三者结合

在[]中出现^表示取反,举例说明

例4.取出带有oo。但oo前不含g的文本

最后一个”19:goooooogle yes!”为什么会匹配上呢?尽管前面是goo,明显不满足。可是。 go(oo)oogle,是满足的,所以匹配上了。这也许就是正则的难点之中的一个,你写出的正则也许存在bug,但你还没发现。

例5。 匹配带有oo,的文本。但oo前不含小写字母 

看到了吧,这就是[],-,^共同使用,注意:^在[]内才表示取反。



5.^与$

这里又出现了^,但与上面的不一样。这里的^表示行首,对应的$就表示行尾。

例6 取出以the 开头的文本

例7 取出以数字或字母结尾的文本

例8取出空行

空行用’^$’进行匹配



6.点号. 与星号*

点号.表示有且仅有一个随意字符

星号表示反复前一个0个或多个字符



例9匹配形如g??d的字符串(gd之间有两个字符)

如结果所看到的。点号.是表示一个随意字符。



例10 匹配至少连续两个o以上的字符。

注意到这里。”*”的意义与我们所认识的通配符*是不一样的。

例11匹配g开头g结尾的文本

用’g*g’ 是不行的。由于*和通配符是不一样,正确的是’g.*g’

所以,记住,正則表達式的*和通配符的 *不一样!



7.转义\

假设我们想匹配的文本正好是代表一些特殊字符(《鸟哥的linux私房菜》中说是在shell中有特殊函义,我觉得是不对的,或者说让人误解,仅仅是
shell中的吗?比方他举的样例点号,在shell中代表的是本文件夹吧?事实上真正的原因是.是正则表达字符吧?),该怎样?转义。

如匹配以点号 . 结尾的文本。我们知道.在正則表達式中表示匹配且仅匹配随意一个字符,所以能够用’\.$’

今天就先写到主要的正則表達式吧。



參考资料:

《鸟哥的Linux私房菜》

《Linux程序设计》

http://www.ibm.com/developerworks/cn/education/aix/au-unixtips3/

http://www.cnblogs.com/chengmo/archive/2010/10/10/1847287.html

版权声明:本文博主原创文章,博客,未经同意不得转载。

使用方便 正则表达式grep,sed,awk(一)的更多相关文章

  1. linux三剑客grep|sed|awk实践

    最好先学习正则表达式的基本用法,以及正则表达式BREs,EREs,PREs的区别 此坑待填 grep sed awk

  2. 开发环境入门 linux基础 (部分)正则表达式 grep sed

    /etc/profile /etc/bashrc  .变量添加到shell环境中,永久生效. /root/.bashrc /root/.bash_profile 正则表达式 定义:正则就是用一些具有特 ...

  3. Linux三剑客grep/sed/awk

    grep/sed/awk被称为linux的“三剑客” grep更适合单纯的查找或匹配文本: sed更适合编辑匹配到的文本: awk更适合格式化文本,对文本进行较复杂各式处理: Grep --color ...

  4. grep, sed, awk

    这几个工具是shell中非常好用的文本流处理工具,可以进行查找,编辑或者分析等工作,它们都支持正则表达式,也支持使用shell内置的变量 grep grep是一个字符串比较工具,用于从文件中提取满足条 ...

  5. 【Linux】 字符串和文本处理工具 grep & sed & awk

    Linux字符串&文本处理工具 因为用linux的时候主要用到的还是字符交互界面,所以对字符串的处理变得十分重要.这篇介绍三个常用的字符串处理工具,包括grep,sed和awk ■ grep ...

  6. Linux基础命令-Nginx-正则表达式( grep sed awk )-Shell Script--etc

    Linux基础使用 学习内容博客 内存 查看swap分区信息 > swapon -s 添加swap分区 > mkswap /dev/sdb2 > 激活 swapon -a /dev/ ...

  7. [svc]linux正则实战(grep/sed/awk)

    企业实战: 过滤ip 过滤出第二行的 192.168.2.11. eth0: flags=4163<UP,BROADCAST,RUNNING,MULTICAST> mtu 1500 ine ...

  8. 三个支持正则表达式的行处理的工具: grep/sed/awk

    grep: 全称Global Regular Expression Print, 是干什么的,不多说了: 用法:grep [-options] [pattern] [filename] 选项: -c: ...

  9. Linux 正则表达式 vi, grep, sed, awk

          1. vi 表示内容的元字符 模式 含义 . 匹配任意字符 [abc] 匹配方括号中的任意一个字符.可以使用-表示字符范围,如[a-z0-9]匹配小写字母和阿拉伯数字. [^abc] 在方 ...

随机推荐

  1. php-GD库函数(三)

    <?php //imagefilledellipse — 画一椭圆并填充 /*bool imagefilledellipse ( resource $image , int $cx , int ...

  2. Android 动态显示和隐藏软键盘

    ** * 动态设置软盘的显示和隐藏 * @author JPH */ public class MainActivity extends Activity implements OnClickList ...

  3. Robotium原则的实施源代码分析

    从前面的章节<Robotium源代码分析之Instrumentation进阶>中我们了解到了Robotium所基于的Instrumentation的一些进阶基础.比方它注入事件的原理等,但 ...

  4. Blink: Chromium的新渲染引擎

    编自http://www.chromium.org/blink 关于blink Google Chrome/Chromium 从创始至今一直使用 WebKit(WebCore) 作为 HTML/CSS ...

  5. 光谱郑匡移动互联网O2O完美融合

    移动互联网尽管市场颇大,前景广阔,可是由于数据过于密集,非常难精准的定位所谓的目标客户群,然而O2O的线下市场却与互联网市场有极大的反差.一直认为高校周边的小商家是最幸福的生意人,客户明白(就是本校学 ...

  6. android对app代码混淆

    接到新任务.现有项目的代码混淆.在此之前混淆了一些理解,但还不够具体和全面,我知道有些东西混起来相当棘手. 但幸运的是,现在这个项目是不是太复杂(对于这有些混乱).提前完成--这是总结. 第一部分 介 ...

  7. Spring Assert主张 (参议院检测工具的方法-主张)

    Web 收到申请表格提交的数据后都需要对其进行合法性检查,假设表单数据是不合法的,该请求将被拒绝.分类似的,当我们写的类方法,该方法还经常需要组合成参 法国检查.假设参议院不符合要求,方法通过抛出异常 ...

  8. air mobile andriod ios 页面加载控件

    通过最近的研究flex 书写android .ios申请书,我们遇到了一个问题加载页面,我们用flex sdk 12,air 15 无级似android ListView寻呼模块.所以,我和我的同事们 ...

  9. Android菜鸟的成长笔记(15)—— Android中的状态保存探究(下)

    原文:Android菜鸟的成长笔记(15)-- Android中的状态保存探究(下) 在上一篇中我们简单了解关于Android中状态保存的过程和原理,这一篇中我们来看一下在系统配置改变的情况下保存数据 ...

  10. 我只是不甘心-------Day51

    回放假回家一天,完全断网,天气也很给力配合.水蓝色的天空.白云,抬眼,我没有看到刺目的光芒,但仍眼眼睛刺痛.已经缩小眼,我试图打开眼睛,就像眼泪都流出来了,它不会擦到沙,这是很多其他的没地方. 哥哥去 ...