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

相关推荐

  • shell编程进阶

    2、编写脚本/root/bin/yesorno.sh,提示用户输入yes或no,并判断用户输入的是yes还是no,或是其它信息 read -p “Enter you choice yes|no:” Choice Choice1=`echo $Choice | tr ‘[a-z]’ ‘[A-Z]&#8…

    2017-09-16
  • 文件相关操作练习

    1、复制/etc/skel目录为/home/tuser1,要求/home/tuser1及其内部文件的属组和其它用户均没有任何访问权限: 2、编辑/etc/group文件,添加组hadoop: 3、手动编辑/etc/passwd文件新增一行,添加用户hadoop,其基本组ID为hadoop组的id号;其家目录为/home/hadoop: 4、复制/etc/sk…

    2017-11-17
  • N28 第三周【2】:用户和组管理

    用户和组管理 前言 Linux用户管理非常关键且重要,Linux的所有进程都是以不同的身份拥有不同的权限来运行和调度资源的。但是我们不用费劲心思去管理,因为系统将用户划分成为了两部分:无所不能的root用户和普通用户。同时呢,又将普通用户分为系统用户和登录用户。对于Linux,他会用UID去快速识别用户身份,对于我们,可以用用户名去识别。 接下来介绍一下用户…

    Linux干货 2017-12-19
  • CentOS Linux解决Device eth0 does not seem to be present

    CentOS Linux解决Device eth0 does not seem to be present 今天早上打开xshell链接虚拟机,突然链接不上。然后进入虚拟机执行 ifconfig 或者 ip addr list 命令发现eth0 不见。然后执行重启网卡命令发现  解决办法:   首先,打开/etc/udev/rules.d/70-p…

    Linux干货 2016-08-02
  • 聊聊CentOS6的启动过程

    前言:     作为一个合格的运维人员,系统的启动过程我们需要牢记在心,此文不深入探讨,只求大致理解CentOS6的启动过程。 一张图带你了解CentOS6的启动过程 注意:图片放大查看效果更佳 上图各阶段详解 POST:计算机开机时BIOS对其各硬件的简单测试,测试各硬件的完整性 BootSqunce:加电自检后根据…

    Linux干货 2016-03-14
  • Linux脚本基础练习

    马哥教育网络班+ 第7周课堂练习 Linux脚本基础练习 练习: 1、创建一个10G分区,并格式为ext4文件系统; (1)要求其block大小为2048,预留空间百分比为2,卷标为MYDATA,默认挂载属性包含acl (2)挂载至/data/mydata目录 要求挂载时禁止程序自动运行,且不更新文件的访问时间戳 第一步,在虚拟机中挂载一块20G的新硬盘 &…

    Linux干货 2016-11-09