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)
上一篇 2016-08-10 10:27
下一篇 2016-08-10 10:27

相关推荐

  • Linux的学习之路-第一周

    >N21-Keen-第一周作业 ### 1. 计算机的组成及其原理     >计算机的组成是根据冯诺依曼体系设计的,主要分为五大部分:控制器、运算器、存储器、输入设备和输出设备。          >其中控制器和运算器分布在CPU上,主要用来做控制和运算作用。存储器也就是…

    Linux干货 2016-07-16
  • N25-第15周博客作业

    1、总结sed和awk的详细用法; sed [OPTION]…  ‘script’  [input-file] … script: 地址定界编辑命令 常用选项: -n:不输出模式空间中的内容至屏幕; -e script, –expression=script:多点编辑;…

    Linux干货 2017-05-21
  • Linux下 文件类型不同颜色的含义

    linux 文件颜色的含义 蓝色代表目录 绿色代表可执行文件 红色表示压缩文件 浅蓝色表示链接文件 灰色表示其他文件 红色闪烁表示链接的文件有问题了 黄色表示设备文件 蓝色文件———-目录 白色文件———-一般性文件,…

    Linux干货 2016-10-18
  • 马哥教育网络班21期-第八周课程练习

    1、请描述网桥、集线器、二层交换机、三层交换机、路由器的功能、使用场景与区别。 设备 使用场景 功能 区别 集线器 局域网 共享同一网络 不能分隔冲突域 网桥 局域网 连接不同网段,拓展局域网 端口少,可以分隔冲突域 二层交换机 局域网 连接不同局域网段,数据交换 端口更多,可以分隔冲突域,速率更快 三层交换机 局域网,广域网 路由,高速数据交换,分隔广播域…

    Linux干货 2016-09-08
  • 简单易懂的CentOS启动流程

    在使用Linux操作系统时,我们只需要按下电源键,等待一会儿,登录终端就呈现在我们眼前,在这段时间内,操作系统究竟做了哪些事情? 先上一张流程梗概图,你会对启动流程有个大致的了解 启动流程详解 POST加电自检   主板在接通电源后,系统首先由POST程序来对CPU、主板、内存、硬盘子系统、显示子系统串并行接口、键盘、CD-ROm光驱等硬件进行检测 读取MB…

    Linux干货 2016-09-11
  • DNS服务器以及子域授权

    1、安装bind      [root@www ~]# yum -y install bind 2、查看安装生成的文件      [root@www ~]# rpm -ql bind | less 3、程序路径     /var/named 4、配置…

    Linux干货 2017-05-31