与正则表达式的第一次亲密接触

Linux文本处理三剑客

  • grep:文本过滤(模式:psttern)工具

    grep,egrep,fgrep (不支持正则表达式搜索)

  • sed:stream editor,文本编辑工具

  • awk:Linux上的实现gawk,文本报告生成器

下面就先谈一谈:grep及正则表达式;egrep及扩展的正则表达式

grep

  • grep:Goobal search REgular expression and Print out the line

    作用:文本搜索工具,根据用户指定的“模式”对目标文本逐行进行匹配检查;打印匹配到的行

    模式:用正则表达式字符及文本字符所编写的过滤条件

grep命令选项
  • –color=auto: 对匹配到的文本着色显示
  • -v: 显示不被pattern匹配到的行
  • -i: 忽略字符大小写
  • -n:显示匹配的行号
  • -c: 统计匹配的行数
  • -o: 仅显示匹配到的字符串
  • -q: 静默模式,不输出任何信息
  • -A #: after, 后#行
  • -B #: before, 前#行
  • -C #:context, 前后各#行
  • -e:实现多个选项间的逻辑or关系 grep –e ‘cat ’ -e ‘dog’ file
  • -w:匹配整个单词
  • -E:使用ERE
  • -F:相当于fgrep,不支持正则表达式

正则表达式

REGEXP:由一类特殊字符及文本字符所编写的模式,其中有些字符(元字符)不表示字符字面意义,而表示控制或通配的功能

基本正则表达式元字符
元字符 定义
^ 位置锚定:行首
$ 位置锚定:行尾
. 任意单一字符
[ ] [ ]内任意单一字符
[^] 除[ ]内任意单一字符
* *前面字符重复不确定次数
+ +前面字符重复一次以上不确定次数
? ?前面字符重复0或1次
\ 转义符
.* 任意长度字符
{n} 前面字符重复n次
{n,} 前面字符重复n次以上
{m,n} 前面字符重复m次和n次之间
[:alnum:] 字母和数字
[:alpha:] 代表任何英文大小写字符,亦即A-Z,a-z
[:lower:] 小写字母
[:upper:] 大写字母
[:blank:] 水平空白字符(空格和制表符)
[:space:] 所有水平和垂直的空白字符(比[:blank:]包含的范围广)
[:cntrl:] 不可打印的控制字符(退格,删除,警铃…)
[:digit:] 十进制数字
[:graph:] 可打印的非空白字符
[:print:] 可打印字符
[:punct:] 标点符号
[:xdigit:] 十六进制数字

egrep

  • egrep = grep -E
  • egrep [OPTIONS] PATTERN [FILE…]
扩展的正则表达式的元字符
元字符 定义
. 任意单个字符
[ ] 指定范围的字符
[^] 不在指定范围的字符
* 匹配前面字符任意次
? 0或1次
+ 1次或多次
{m} 匹配m次
{m,n} 匹配至少m次,之多n次
^ 位置锚定:行首
$ 位置锚定:行尾
<,\b 位置锚定:词首
>,\b 位置锚定:词尾
( ) 分组
\1,\2 后向引用
学之前是拒绝的,学之后是懵逼的。

原创文章,作者:XIAJIDONG,如若转载,请注明出处:http://www.178linux.com/72678

(0)
XIAJIDONGXIAJIDONG
上一篇 2017-04-06
下一篇 2017-04-06

相关推荐

  • 文件查找(Find和Locate)常用用法及摩根定律趣解(重要)

    文件查找(Find和Locate)常用用法及摩根定律趣解(重要) 摩根定律: 非(A 且 B)=(非 A)或(非 B) 非(A 或 B)=(非 A)且(非 B) 这样看起来不是很好理解下面通过一些列图片给大家展示; 图(1)  图(2)  图二中的黑色就A且B,A且B的反面三种情况(如图1)即为(非A)或(非B)。因此…

    Linux干货 2016-08-21
  • Linux中命令的分类,hash缓存表与别名

        命令的分类:     在Linnux中,平常工作用的是字符界面。Linux输入命令后,shell接收命令通过系统调用把命令送入内核中执行。    *shell中的可执行命令分为两类        1.内部命令:为shell自带命令,利用某种形式在开机后…

    Linux干货 2017-07-15
  • 关于文件权限管理了解和使用

                    文件权限管理   文件属性格式              文件属性操作 chown          设置文件的所有者…

    系统运维 2016-08-05
  • Java线程

    线程是一个单独程序流程。多线程是指一个程序可以同时运行多个任务,每个任务由一个单独的线程来完成。也就是说,多个线程可以同时在一个程序中运行,并且每一个线程完成不同的任务。程序可以通过控制线程来控制程序的运行,例如线程的等待、休眠、唤起线程等。本章将向读者介绍线程的机制、如何操作和使用线程以及多线程编程。  1. 线程的基本知识   &nb…

    2015-06-08
  • Btrfs文件系统的管理和应用

        Btrfs(我们称之为Butter FS或者B-tree FS)被称为新一代的linux文件系统。一直以来,EXT文件系统以其卓越的稳定性成为linux标准的文件系统。但近年来,EXT3暴露出一些扩展性的问题(如单一文件大小限制、总文件系统大小限制等),于是便催生了EXT4。但同时,Btrfs向人们展现出诸多优…

    Linux干货 2016-02-14
  • 变量

    变量     在shell脚本中,单独的字符或者命令只能引用一次,对于变量,我们可以多次引用,且对变量的赋值修改方便。对于一条很长的命令或者频繁使用的路径等,我们可以赋值给一个变量,比如获得系统中所有用户的uid,要输入很长的一段命令,我们如果每次使用都输入命令是件很麻烦的事情,如果赋值变量,那么就会很方便。设置变量userui…

    Linux干货 2017-08-06

评论列表(1条)

  • renjin
    renjin 2017-04-12 11:30

    详细介绍了正则表达式的知识点,内容写的很不错,排版也很好