Mozart的剑(文本处理工具)——叁剑(grep、正则表达式)

之前的句子

烟锁池塘柳 炮镇海城楼

因荷而得藕 有杏不需梅

认识于小林寒风的一篇小说《凤山遗梦》

grep

grep是一种强大的文本搜索工具,它能使用正则表达式搜索文本,并把匹配的行打印出来。

作用:文本搜索工具,根据用户指定的模式对目标文本逐行进行匹配检查;打印匹配到的行。模式:由正则表达式字符及文本字符所编写的过滤条件

用法:

grep [OPTIONS] PATTERN [FILE…]

简单示例:

Mozart的剑(文本处理工具)——叁剑(grep、正则表达式)

grep命令选项

–color=auto  :对匹配到的文本着色显示,(CentOS7中“别名”alias中已设置)

-v  :显示不被pattern匹配到的行,反向匹配行。

-i  :忽略字符大小写

-n  :显示匹配的行号

-c  :统计匹配的行数

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

-H, –with-filename当搜索多个文件时,显示匹配文件名前缀

-h–no-filename当搜索多个文件时,不显示匹配文件名前缀

-q  :静默模式,不输出任何信息(注重执行过程,不注重执行的结果)

-e  :实现多个选项间的逻辑or关系

示例:grep –e root –e magedu /etc/passwd

Mozart的剑(文本处理工具)——叁剑(grep、正则表达式)

-w  :匹配整个字符串

-E  :使用ERE,扩展正则表达式egrep

-F  :相当于fgrep,一个换行符分隔的字符串的集合fgrep,不支持正则表达式。

-A#  after,打印匹配本身以及后#行行

-B#  before, 打印匹配本身以及前#行行

-C#  context, 打印匹配本身以及前后各#行行

正则表达式

REGEXP:由一类特殊字符及文本字符所编写的模式,其中有些字符(元字符)不表示字符字面意义,而表示控制或通配的功能。简单来说,正则表达式是通过一些特殊字符的排列,用以查找、替换、删除一行或多行文字字符串

正则表达式可分为两类:基本正则表达式:BRE,扩展正则表达式:ERE

按元字符分类:字符匹配、匹配次数、位置锚定、分组,根据元字符分类我们一一介绍两类正则表达式。

基本正则表达式BRE

用法:grep [OPTIONS] PATTERN [FILE…]

元字符分类:

1)字符匹配:

. :匹配任意单个字符

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

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

[:alnum:] :字母和数字

[:alpha:] :代表任何英文大小写字符,亦即A-Z,a-z

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

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

[:space:] :水平和垂直的空白字符(比[:blank:]包含的范围广),任何产生空白的字符。

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

[:digit:] :十进制数字

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

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

[:print:] :可打印字符

[:punct:] :标点符号

2)匹配次数:用在要指定次数的字符后面,用于指定前面的字符要出现的次数

* :匹配前面的字符任意次,包括零次无限次

.* :任意长度的任意字符

\? :匹配其前面的字符01

\+ :匹配其前面的字符至少1

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

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

\{,n\} :匹配前面的字符至多n

\{n,\} :匹配前面的字符至少n

3)位置锚定:定位出现的位置

^ :行首锚定,用于模式的最左侧

$ :行尾锚定,用于模式的最右侧

^PATTERN$ :用于模式匹配整行

^$ :空行

^[[:space:]]*$ :空白行

\<或或\b词首锚定,用于单词模式的左侧

\>或或\b词尾锚定;用于单词模式的右侧

\<PATTERN\>匹配整个单词

4)分组:

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

分组括号中的模式匹配到的内容会被正则表达式引擎记录于内部的变量中,这些变量的命名方式为:\1,\2,\3,…其中涉及后向引用:引用前面的分组括号中的模式所匹配字符,而非模式本身\1表示从左侧起第一个左括号以及与之匹配右括号之间的模式所匹配到的字符(具体用法可查看扩展正则表达式中的举例)

\|:逻辑关系or 或

示例:显示/proc/meminfo文件中以大小s开头的行

Mozart的剑(文本处理工具)——叁剑(grep、正则表达式)

扩展的正则表达式ERE

用法:egrep [OPTIONS] PATTERN [FILE…]  其中:egrep等价于grep –E

元字符分类:

1)字符匹配:

. :任意单个字符

[] :指定范围的字符

[^] :不在指定范围的字符

2)次数匹配:

:匹配前面字符任意次

?  :01

1次或多次

{m}  :匹配m

{m,n}  :至少m,至多n

3)位置锚定:

^  :行首

$ :行尾

\<,\b :语首

\>,\b :语尾

4)分组:

():将一个或多个字符捆绑在一起,当作一个整体进行处理,例如:\(root\)\+分组括号中的模式匹配到的内容会被正则表达式引擎记录于内部的变量中,这些变量的命名方式为:\1,\2,\3,…,其中涉及后向引用:引用前面的分组括号中的模式所匹配字符,而非模式本身\1表示从左侧起第一个左括号以及与之匹配右括号之间的模式所匹配到的字符

示例:后向引用,

显示CentOS7的/etc/grub2.cfg文件中,至少以一个空白字符开头的且后面存非空白字符的行。

 cat /etc/grub2.cfg | grep “^\([[:blank:]]\)\{1,\}[^\1]” 

Mozart的剑(文本处理工具)——叁剑(grep、正则表达式)

|:逻辑关系 或 or (相似基本正则表达式)

简单对比一下就会发现,基本正则表达式和扩展正则表达式的区别就在于拓展正则表达中好多符号可以不用加“\”转义字符,除了后向引用“\1\2…”和位置锚定“\b\>…

文本处理工具系列圆满结束,以后发现需要补充的会及时更新,最后的往往是最重要的,此次总结可能存在疏漏,请各位大佬批评指正。

文本处理工具系列<1>http://www.178linux.com/82973       <2>http://www.178linux.com/83083

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

(0)
MozartMozart
上一篇 2017-08-03 11:32
下一篇 2017-08-03 19:36

相关推荐

  • tomcat优化

    安装过程就不多说了,本次主要说明我在实际工作中的一些优化。    1,修改tomcat的运行模式,常见的有 bio,nio, apr三种    我选择的apr模式,这种对tomcat的性能有较大提高. a:可以根据压力测试工具来进行测试观察。(其实我没对修改apr模式后压测,我直接问百度的) b:重新启动tomcat后…

    Linux干货 2016-06-28
  • 第八周作业脚本练习

    1、写一个脚本,使用ping命令探测172.16.250.1-172.16.250.254之间的所有主机的在线状态;      在线的主机使用绿色显示;      不在线的主使用红色显示;          &…

    Linux干货 2017-02-01
  • 马哥教育网络班20期+第2周课程练习

    开启我的博客之行 艰难的学习了一周,现在来写写作业回顾一下,这周我都学习了什么? 1、Linux上的文件管理类命令都有哪些,其常用的使用方法及其相关示例演示。 文件管理命令有:cp、mv、rm    复制命令:cp       cp [OPTION]… [-T] SOURCE DEST &nbsp…

    Linux干货 2016-06-23
  • grep基本正则表达式以及扩展正则表达式

    基本正则表达式: grep:Globel serach REgular expression and print out the line 作用:文本搜索工具,根据用户指定的“模式(过滤条件)”对目标文本逐行进行匹配检查,打印匹配到的行 模式:由正则表达式的元字符及文本字符所编写出的过滤条件 grep选项:       &nbs…

    Linux干货 2016-08-08
  • 网络管理总结

      在学习Linux的快两个月时间的这个阶段,我们学习到了网络的相关知识,哇,原来我们上网是需要这么多步骤的,玩了这么久的电脑,打开过无数网站还只是停留在以为打开网站只需要点点鼠标的层面,惭愧惭愧。学习了一周,终于了解了一些网络的基层结构和一些网络协议,下面是对这一周所学知识的一些总结,加强记忆和理解。还停留在以为打开一个网站只是动动鼠标…

    2017-09-02
  • MySQL复制

    目录: 1.备份与恢复 2.主从复制 3.主主复制 4.半同步复制 5.MHA 6.centos7搭建mariadb Galera集群 1.备份和恢复 备份工具:mysqldump+复制binlog xtrabackup (1) mysqldump+复制binlog 备份: mysqldump -E -R –triggers –master-data=2 –…

    2017-11-21