13grep和正则表达式

grep:Global search REgular expression and Print out the line . 文本过滤工具,根据用户指定的模式对目标文本进行匹配检查;打印匹配到的行。过滤即不改变原来文本数据。

grep [options] PATTERN [file…]

–color=auto: 对匹配到的文本着色显示

-v:显示不被pattern匹配到的行

-i:忽略大小写

-n:显示匹配的行号

-c:统计匹配的行数

-o:仅显示匹配到的字符串

-q:静默模式,不输出任何模式

-A #:after,后#行一并显示

-B #:before,前#行一并显示

-C #:context,前后#行一并显示

-e:实现多个选择间的逻辑或关系–> grep -e ‘cat’ -e ‘dog’ file

grep的PATTERN 支持正则表达式,支持正则表达式的还有 vim,less,nginx等

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

正则表达式有基本正则表达式(BRE)和扩展正则表达式(ERE)两种,元字符分类则有四种:字符匹配、匹配次数、位置锚定和分组

字符匹配:

. 表示匹配任意单个字符

[] 表示匹配指定范围内的任意单个字符

[^] 表示匹配指定范围外的任意单个字符

[:alnum:] 字母和数字

[:alpha:] 英文字母

[:lower:] [:upper:]  大、小写字母

[:blank:] (空格和制表符tab)

[:space:] 垂直和水平的空白字符(比[:blank:]包含的范围广)

[:cntrl:] 不可打印的控制字符(退格、删除、警铃。。。)

[:digit:] [:xdigit:] 十进制数字,十六进制数字

[:graph:] 可打印的非空白字符

[:print:] 可打印的字符

[:punct:] 标点符号

匹配次数:

* 匹配前面的字符任意次,包括0次。在贪婪模式下:即尽可能长的匹配

.* 任意长度的任意字符

\? 匹配器前面的字符 0或1次

\+ 匹配其前面的字符至少一次

\{n\} 匹配前面的字符n次

\{m,n\}匹配其前面的字符至少m次,至多n次

位置锚定:

^ 行首锚定

$ 行尾锚定

^pattern 用于模式匹配整行 ^$ 空行  ^[[:space:]]*$  空白行

\<,\b 词尾锚定

\>,\b 词首锚定

\<pattern\> 匹配整个单词

分组:

\(\) 将一个或多个字符捆绑在一起当做一个整体进行处理,eg:\(root\)\+

分组括号中的的模式匹配到的内容会被正则表达式引擎记录与内部的变量中,这些变量的命名方式为:\1,\2,\3,…

\1 表示从坐骑第一个左括号以及与之匹配的右括号之间的模式所匹配到的字符

示例:\(string1\+\(string2\)*\)

\1 :string1\+\(string2\)*

\2 :string2

后向引用:引用前面的分组括号中的模式所匹配字符,而非模式本省

egrep及扩展正则表达式

egrep = grep -E 

egrep [options] pattern [file…]

扩展正则表达式的元字符:

字符匹配:

.

[]

[^]

次数匹配:

*

?

+

{m}

{m,n\}

位置锚定:

^

$

\<,\>,\b

分组:

()

后向引用:\1,\2…

或者:

a|b : a 或b

C|cat :C 或者cat

(C|c)at: Cat或者cat

—-joker的部落阁

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

(0)
jokerjoker
上一篇 2016-11-27 22:52
下一篇 2016-11-27 22:56

相关推荐

  • 计算机组成及功能简介

    计算机(computer)       当今它已经走进千家万户,应用在各个领域,没有用过计算机的朋友应该很少了吧?但是,你真正了解计算机是什么吗?(我也是刚刚了解的,(*^__^*)嘻嘻……)那么,接下来,让我们一起探究一下它的具体构造吧!       所谓的计算机就是…

    Linux干货 2016-10-25
  • 第五周作业

    1、显示/boot/grub/grub.conf中以至少一个空白字符开头的行; ~]# grep  “^[[:space:]]\{1,\}” /boot/grup/grup.conf                     &…

    2017-03-01
  • Linux发展史

    简 述 Linux是一套自由加开放源代码的类Unix操作系统,诞生于1991年10月5日(第一次正式向外公布),由芬兰学生Linus Torvalds和后来陆续加入的众多爱好者共同开发完成。 Linux是一个基于POSIX和Unix的多用户、多任务、支持多线程和多CPU的操作系统。它能运行主要的Unix工具软件、应用程序和网络协议,可支持32位和64位硬件。…

    2016-10-14
  • Linux中的账号管理(上)

    一背景  Linux  是  一个真实的、完整的多用户多任务操作系统,多用户多任务就是可以在系统上建立多个用户,而多个用户可以在同一时间内登录同一个系统执行各自不同的任务,而互不影响,例如某台linux服务器上有4个用户,分别是root、www、ftp和mysql,在同一时间内,root用户可能在查看系统日志,管理维护系统,ww…

    Linux干货 2016-08-04
  • linux系统自动安装之PXE

    PXE(集成在网卡上的)预启动执行环境 (能够通过网络实现操作系统安装) PXE工作原理1、Client向PXE Server上的DHCP发送IP地址请求消息,DHCP检测Client是否合法(主要是检测Client的网卡MAC地址),如果合法则返回Client的IP地址,同时将启动文件pxelinux.0的位置信息一并传送给Client2、Client向P…

    2018-01-16