9 grep & egrep & 正则表达式

grep

grep = Global search REgular expression and Print out the line

语法及用途

grep [OPTIONS] PATTERN [FILE...]

根据用户指定的“ PATTERN ”对FILE逐行进行匹配检查,打印匹配到的行;
PATTERN 是由正则表达式字符及文本字符所编写的过滤条件。

常用选项

参数 说明
–color=auto 对匹配到的文本着色显示;
-v 显示不能够被pattern匹配到的行;
-i 忽略字符大小写
-n 显示匹配的行号
-c 统计匹配的行数
-o 仅显示匹配到的字符串;
-q 静默模式,不输出任何信息
-A # after, 后#行
-B # before, 前#行
-C # context, 前后各#行
-e 实现多个选项间的逻辑or关系(grep –e ‘cat ’ -e ‘dog’ file)
-w 整行匹配整个单词
-E 使用扩展正则表达式ERE,否则使用基本正则表达式BRE

正则表达式

基本正则表达式BRE

字符匹配

字符 含义
. 匹配任意单个字符;
[] 匹配指定范围内的任意单个字符
[^] 匹配指定范围外的任意单个字符
[:digit:] 数字
[:lower:] 小写字母
[:upper:] 大写字母
[:alpha:] 字母
[:alnum:] 字母与数字
[:punct:] 标点
[:space:] 空字符或tab

匹配次数

用在要指定次数的字符后面,用于指定前面的字符要出现的次数
字符 含义
* 匹配前面的字符任意次,包括0次(贪婪模式:尽可能长的匹配)
.* 任意长度的任意字符
? 匹配其前面的字符0或1次
\+ 匹配其前面的字符至少1次
\{m\} 匹配前面的字符m次
\{m,n\} 匹配前面的字符至少m次,至多n次
\{,n\} 匹配前面的字符至多n次
\{m,\} 匹配前面的字符至少m次

位置锚定

定位出现的位置
字符 含义
^ 行首锚定,用于模式的最左侧
$ 行尾锚定,用于模式的最右侧
^PATTERN$ 用于模式匹配整行
^$ 空行
^[[:space:]]*$ 空白行
\< 或 \b 词首锚定,用于单词模式的左侧
\> 或 \b 词尾锚定;用于单词模式的右侧
\<PATTERN\> 匹配整个单词

分组

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

扩展正则表达式ERE

要使用扩展正则表达式,需要使用egrep或grep -E命令,如下所示:
egrep = grep -E
egrep [OPTIONS] PATTERN [FILE...]

字符匹配

字符 含义
. 任意单个字符
[] 指定范围的字符
[^] 不在指定范围的字符

次数匹配

字符 含义
* 匹配前面字符任意次
? 0或1次
+ 1次或多次
{m} 匹配m次
{m,n} 至少m,至多n次

位置锚定

字符 含义
^ 行首
$ 行尾
\<, \b 语首
\>, \b 语尾

分组

() 后向引用:\1, \2, …

或者

a|b 

C|cat    :C 或 cat 

(C|c)at  :Cat 或 cat


练习

  1. 显示/proc/meminfo信息中以s或S开头的信息

image1.png

  1. 显示rpc用户所使用的shell类型

image2.png

  1. 查看/etc/passwd中出现的2~3位数字

image3.png

  1. 查看/etc/grub2.cfg中以空白开始的非空行

image4.png

  1. 查看/etc/passwd 中用户名与shell同名的用户信息

image5.png

  1. 显示当前系统root、mage或wang用户的UID和默认shell

image6.png

  1. 找出/etc/rc.d/init.d/functions文件中行首为某单词(包括下划线)后面跟一个小括号的行

image7.png

  1. 使用egrep取出/etc/rc.d/init.d/functions中其基名

image8.png

  1. 使用egrep取出上面路径的目录名

image9.png

  1. 统计以root身份登录的每个远程主机IP地址的登录次数

image10.png

  1. 利用扩展正则表达式分别表示0-9、10-99、100-199、200-249、250-255

0-9     :   [0-9]
10-99   :   [1-9][0-9]
100-199 :   1[0-9]{2}
200-249 :  2[0-4][0-9]
250-255 :  25[0-5]
  1. 显示ifconfig命令结果中所有IPv4地址

12.png


  1. [😒pace:] 

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

(0)
taobaibaitaobaibai
上一篇 2016-08-10
下一篇 2016-08-10

相关推荐

  • 查找 -数据结构

    几种查找算法:顺序查找,折半查找,分块查找,散列表 一、顺序查找的基本思想:  从表的一端开始,向另一端逐个按给定值kx 与关键码进行比较,若找到,查找成功,并给出数据元素在表中的位置;若整个表检测完,仍未找到与kx 相同的关键码,则查找失败,给出失败信息。 说白了就是,从头到尾,一个一个地比,找着相同的就成功,找不到就失败。很明显的缺点就是查找效…

    Linux干货 2015-07-28
  • Nginx基本使用方法及各模块基本功能

    一、Nginx介绍     Nginx是由俄罗斯软件工程师Igor Sysoev开发的一个高性能的HTTP和反向代理服务器,具备IMAP/POP3和SMTP服务器功能,Nginx最大的特点是对高并发的支持和高效的负载均衡,在高并发的需求场景下,是Apache服务器不错的替代品。目前,包括新浪、腾讯等知名网站都已使用Nginx作为Web应用…

    Linux干货 2016-01-21
  • lnmp部署实验

    Lnmp部署 实验环境: 1、Centos 7主机一台,客户机一台。 2、在centos 7主机上部署:    Nginx  php-fpm  php-mysql  mariadb-server 实验步骤: 1、启动nginx服务,确保80端口打开,启动mariadb-server,确保3306端口…

    Linux干货 2016-10-30
  • 程序包编译安装

    linux安装采用命令行形式。

    2018-03-17
  • linux 用户与组管理详解

    ##用户与组的分类 Linux系统对用户分配如下: -系统管理员:root -普通用户:普通用户分为以下两种           系统用户:系统用户通常是不可登陆的,执行某些服务及进程的帐号           登录用户:一般用户,    …

    Linux干货 2017-04-05
  • 计算机基础

    计算机系统 计算机系统由两大部分组成硬件系统(Hartware)和软件系统(Software) 硬件系统:主要由中央处理器、存储器、输入输出控制系统和各种外部设备组成。中央处理器是对信息进行高速运算处理的主要部件,其处理速度可达每秒几亿次以上操作。存储器用于存储程序、数据和文件,常由快速的主存储器(容量可达数百兆字节,甚至数G字节)和慢速海量辅助存储器(容量…

    Linux干货 2017-05-20