正则表达式基础以及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
下一篇 2017-04-09

相关推荐

  • Linux用户和组管理

        登录Linux时我们都需要输入账号和密码,但Linux只会识别账号所对应用ID号,这个ID号就称为UID。     同理每个用户组也都拥有相对应的组ID号,即GID。     Linux根据/etc/passwd文件的内容来查找当前…

    Linux干货 2015-04-26
  • 浅谈linux基础知识(一)

    一:计算机的组成 组成: 计算机的主要组成部分为计算机硬件、软件。 计算机硬件系统包括: 主机和外部设备。 主机包括:运算器、控制器、存储器(只读ROM、随机RAM)。 外部设备主要包括:输入设备、输出设备、外存储器和其他。 软件包括: 应用软件、系统软件。 二:linux的发行版及不同发行版之间的联系和区别。 1.Debian(唯一一个无商业公司支持的社区…

    Linux干货 2016-09-18
  • 使用Nmap扫描系统风险点

    0x00 迅速了解Nmap Nmap是一款扫描目标网络信息的工具,可以是黑客用来探测主机信息,收集情报的神器。也可以是运维人员扫描网络环境,及时发现系统漏洞的好帮手。 0x01 它的功能 1、主机发现(Host Discovery)#探测目标网络环境中有哪些主机是可以进行通信的,当然你也可以用ping命令试一下 2、端口扫描(Port S…

    Linux干货 2015-04-19
  • N26-博客作业-week14

    系统的INPUT和OUTPUT默认策略为DROP; 1、限制本地主机的web服务器在周一不允许访问;新请求的速率不能超过100个每秒;web服务器包含了admin字符串的页面不允许访问;web服务器仅允许响应报文离开本机; 配置系统INPUT和OUTPUT默认策略为DROP# iptables -P INPUT DROP# iptables -P OUTPU…

    Linux干货 2017-06-22
  • shell中$(( ))、$( )、“与${ }的区别

    shell中$(( ))、$( )、“与${ }的区别,包括其简单用法。

    2017-09-11
  • 7-28-文件管理

    1.stat命令和时间戳 详解 背景:                在Linux中,没有文件创建时间的概念。只有文件的访问时间、修改时间、状态改变时间。也就是说不能知道   &n…

    Linux干货 2016-08-02