正则表达式基础以及grep的简单使用

正则表达式基础以及grep的简单使用

 

1,定义

正则表达式是你所定义的模式模板,Linux可以用它来过滤文本。Linux工具(比如grep、sed、gawk)能够在处理数据时使用正则表达式对数据进行模式匹配。如果数据匹配模式,它就会被接受并进一步处理;如果数据不匹配,它就会被滤掉。

正则表达式基础以及grep的简单使用

2,正则表达式的原则

(1)正则表达式模式都区分大小写。(2)可以使用空格,数字。(3)空格和其他字符并没有什么区别。

3,特殊字符                                                                  

包括        * [  ] ^ $ ( ) \ + ? | { }   

       要使用特殊字符,必须转义,在转义字符时,需要在它前面加个特殊字符来告诉正则表达式引擎应该将接下来的字符当做普通的文本字符,这个特殊符号就是反斜线(\)。

4,锚字符                                                                   

        ^ 行首锚定

        $ 行尾锚定

正则表达式基础以及grep的简单使用

       \b  \b 匹配词首和词尾  

        \<     \> 匹配词首和词尾    

正则表达式基础以及grep的简单使用

5,grep 基本用法

       -v    取反,找出不包含关键字的行

       -i     忽略字符大小写

       -n    显示匹配的行号

       -c    统计匹配到的行数

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

       -w   匹配整个单词

       -A   n匹配的前n行

       -B    n 关键字的后n行

       -C    n 关键字的前后各n行

正则表达式基础以及grep的简单使用

       -e    实现多个选项的逻辑或关系

正则表达式基础以及grep的简单使用

       -E     egrep   支持扩展的正则表达式

         -F     fgrep   不支持正则表达式

6,字符匹配规则

       .             配任意单个字符

       [abc]       匹配a,b,c中单个字符

       [^abc]     匹配除a,b,c之外的字符

       [:alnum:] 匹配数字和字符

       [:alpha:]  匹配英文大小写字母a-z,A-Z

       [:lower:]  匹配小写字母

       [:upper:]  匹配大写字母

       [:space:]  匹配空格

       [:digit:]   匹配十进制数字

7,匹配次数

       *     匹配前面的字符任意次数,0至正无穷

       .*    匹配任意字符任意次数

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

       \+    匹配前面字符至少1次

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

       \{m,n\}   匹配前面字符出现m至n次

       \{,n\}      匹配前面字符最多出现n次

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

8,扩展正则表达式egrep  

 次数匹配,和基本正则表达式类似,就是少了转义字符(\)

*     匹配前面字符任意次

?    匹配前面字符0次或1次

+     匹配前面字符1次或多次

{m} 匹配前面字符m 次

{m,n}匹配前面字符m到n 次

9,使用管道(|

         管道允许你在检查数据时,用逻辑或方式指定正则表达式引擎要用的两个或者多个模式,如果任何一个模式匹配了数据文本,文本就通过,如果没有模式匹配,则数据流文本匹配失败。

正则表达式基础以及grep的简单使用

10,分组

 将匹配规则分成不同的组 使用 1 2 3..等数字去标识,便于后面使用同样规则的时候可以直接饮用

   \(root\)\+\1

   \(string1\+\(string2\)*\)

   \1  string1\+\(string2\)*

   \2  string2

eg.找出/etc/passwd用户名同shell名的行

   cat /etc/passwd | grep
“^\(\b[[:alnum:]]\+\b\):.*\1$”

   grep
“^\<\(.*\)\>.*\1$” /etc/passwd

cat /etc/passwd | egrep “^(\b[[:alnum:]]+\b):.*\1$”

正则表达式基础以及grep的简单使用

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

(1)
linux is not unixlinux is not unix
上一篇 2017-04-09 19:22
下一篇 2017-04-09 20:04

相关推荐

  • yum更多用法及源码编译安装apache和当天作业

    一、yum的更多用法 上篇文章介绍了yum的基础用法及yum源的基本配置,除此之外yum还有更多的用法,以下将继续介绍yum的使用方法。 1、yum-config-manager工具,该工具可以自动生成yum的repo文件,而不需要手动创建编写,使用方法如下: 用法:yum-config-manager [options] [section] -add-re…

    Linux干货 2016-08-24
  • VIM编辑器用法及练习

    VIM编辑器用法及练习 什么是vim? vim是从vi发展出来的一个文本编辑器。代码补全、编译及错误跳转等方便编程的功能特别丰富,在程序员中被广泛使用,和Emacs并列成为类Unix系统用户最喜欢的文本编辑器。 Vim的第一个版本由布莱姆·米勒在1991年发布。最初的简称是Vi IMitation,随着功能的不断增加,正式名称改成了Vi IMproved。现…

    Linux干货 2016-10-30
  • 如何安装VMware Workstation

    1、打开安装包,直接点击“下一步” 2、选择接受条款,单击“下一步” 3、选择安装路径,单击“下一步” 4、单击“下一步”,也可以勾选掉两个选项   5、单击“下一步”   6、点击“安装”   7、完成安装  

    2017-07-11
  • 文件查找命令Find

    文件查找命令find Find:在文件上查找符合条件的文件,是个实时的查找工具,通过遍历指定路径完成文件查找 工作特点: l  查找速度慢 l  精度查找 l  实时查找 l  可能只搜索用户具有读取和执行权限的目录   语法: find [option]…[查找路径][查找条件][处理动作]   …

    Linux干货 2016-08-16
  • zabbix之报警功能的实现

    一、注册微信公众号 首先申请微信公众平台https://mp.weixin.qq.com/一个人最多申请5个公众号,所以还是可以的 申请完之后就可以根据腾讯的提示使用微信公众号了,然后用你自己的微信扫描关注微信号。 就可以看到用户数了,接下来的就要使用的用户的微信ID号了。点击用户查看用户的微信ID号。在浏览器查看用户的微信ID号。就是那个红色的ID了。 h…

    Linux干货 2017-03-27
  • 计算机的发展及组成

    计算机发展 计算机(Computer):俗称电脑,是一种能接收和存储信息,并按照存储在其内部的程序对海量数据进行自动、高速地处理,然后把处理结果输出的现代化智能电子设备。 1946年,世界上诞生了第一台计算机,用于军事,计算弹道。 1946年数学家冯.诺依曼提出冯诺依曼体系结构,即所有计算机由运算器、控制器、存储器、输入设备、输出设备组成,所有遵循冯.诺依曼…

    Linux干货 2017-07-13