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

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 20:12
下一篇 2017-04-06 23:28

相关推荐

  • Linus Torvalds 语录 Top 10

    下面是Linux的创始人Linus Torvalds的一些言论,这是我个人认为最有意思的10句。如果你想看更多的Linus Torvalds说过的话,你可以看看他在维基百科上的词条:Linux Torvalds。我们在下面给出中英文对照,希望你能喜欢。 “Really, I’m not out to dest…

    Linux干货 2015-04-03
  • 管理用户和组。

    用户的概念        对于计算机的应用,我们大多数都是在储存资料、办公娱乐。我们耗费精力与时间把我们喜欢的一些东西寻找下载在我们的计算机中,这台计算机没有一丁点限制,谁都可以进行访问,那我们所进行存储的一些东西就将变得很不安全,但是我们在给计算机创建一个用户并设置密码之后,其他人没获得…

    Linux干货 2016-10-23
  • Linux发展史

    Linux发展史 Linux的简单介绍 Linux操作系统诞生于1991 年,是一套免费使用和自由传播的类Unix操作系统。Linux存在着许多不同的Linux发行版本。严格意义上的Linux系统应该是GUN/Linux(kernel+Application)而Linux本身只表示Linux系统内核,但实际上人们已经习惯了用Linux称呼GUN/Linux系…

    Linux干货 2016-10-13
  • Centos系统启动概括流程

    §·Centos系统启动概括流程 系统启动流程: PC (OS Llinux) POST(开机)–>BIOS–>MBR(bootloader .446字节)—>kernel–>/sbin/init(/etc/inittab)(用户空间的管理进程)   备注: POST :加电自…

    Linux干货 2016-09-08
  • 第一篇

     新的征程又开始了,努力吧!

    Linux干货 2016-12-26

评论列表(1条)

  • renjin
    renjin 2017-04-12 11:30

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