码迷,mamicode.com
首页 > 其他好文 > 详细

正则表达式:grep

时间:2016-10-27 12:36:44      阅读:175      评论:0      收藏:0      [点我收藏+]

标签:...   image   取反   部分   daemon   单位   egrep   目录   tor   

一、正则表达式简介

正则表达式是对字符串操作的一种逻辑公式,就是用事先定义好的一些特定字符、及这些特定字符的组合,组成一个“规则字符串”,这个“规则字符串”用来表达对字符串的一种过滤逻辑。给定一个正则表达式和另一个字符串,我们可以达到的目的:给定的字符串是否符合正则表达式的过滤逻辑(称作“匹配”);可以通过正则表达式,从字符串中获取我们想要的特定部分

 

二、grep简介

简介:grep(Global Regular Expression Print,全局正则表达式打印),一种文本过滤工具
作用:过滤出指定的行
注意:grep的过滤是以”行”为单位的

 

三、grep参数

-c  只输出匹配行的计数(即有多少行匹配)
-A  除了输出匹配行外还额外在后面显示多几行
-B  除输出匹配行外还额外在前面显示多几行
-C  除了输出匹配行外还额外在前后显示多几行
-v  显示不包含匹配文本的所有行
-r  过滤带有匹配字符的目录
-n  显示匹配字符所在的行的行数
-E  切换为 egrep
-q  只作为判断而不输出结果
--color  高亮显示匹配的字符

[root@root ~]# grep ‘root‘ /etc/passwd       //过滤出带有root的行
root:x:0:0:root:/root:/bin/bash
operator:x:11:0:operator:/root:/sbin/nologin
[root@root ~]# grep -v ‘root‘ /etc/passwd    //过滤出不带有root的行
bin:x:1:1:bin:/bin:/sbin/nologin
daemon:x:2:2:daemon:/sbin:/sbin/nologin
adm:x:3:4:adm:/var/adm:/sbin/nologin
lp:x:4:7:lp:/var/spool/lpd:/sbin/nologin
sync:x:5:0:sync:/sbin:/bin/sync
....

技术分享

技术分享

 

四、grep的规则表达式

^ :锚定行的开头如:‘^grep‘匹配所有以grep开头的行
$ :锚定行的结尾如:‘grep$‘匹配所有以grep结尾的行
^$ :代表空行,^代表行首,$代表行尾,^$意思就是行首之后就是行尾,中间什么也没有,所以代表空行
^.*$ :表示所有行
. :匹配任意一个字符,如‘r.p‘匹配r后接一个任意字符,然后是p
* :匹配零个或多个*号前面的字符如:‘a*b‘可以匹配b、cb、db、3b、$b(前面都是0个a)、ab(1个a)、aab(2个a)、aaaab、aaaaaaaaaab
.* :代表任意字符,如‘a.*b‘,则只要开头是a,结尾是b的字符串都可以匹配,中间多少个字符都可以
[ ] :匹配指定范围内的字符,如‘[Gg]rep‘匹配Grep和grep
^[ ] :以...开头的行,如^[a]表示以a开头的行
[^] :取反,如[^0-9]匹配不是数字的字符
^[^] :取非所在字符的行,如^[^0-9]匹配开头不是数字的行

技术分享

 

扩展:grep 练习题

过滤出既有abc又有def的行:grep ‘abc‘ filename |grep ‘def‘
过滤出有abc或有def的行:grep ‘abc\|def‘ filename
过滤出以a或以b开头的行:grep -E ‘^a|^b‘ filename
过滤出以数字开头的行:grep ‘^[0-9]‘ filename
过滤出带有数字的行:grep ‘[0-9]‘ filename
过滤出带有root的行并输出行号:grep ‘root‘ filename -n
过滤出不带有root的行并输出行号:grep ‘root‘ filename -v -n

 

正则表达式:grep

标签:...   image   取反   部分   daemon   单位   egrep   目录   tor   

原文地址:http://www.cnblogs.com/pzk7788/p/6003186.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!