文本搜索工具:grep,egrep,fgrep

GREP介绍

grep: 根据模式条件搜索文本,并将符合模式的文本行显示出来。

 过滤条件:文本字符和正则表达式的元字符组合而成匹配条件

    以正则表达式的元字符,以及正常字符组合而成。即pattern(模式)

grep命令语法:

grep [options] PATTERN [FILE...]

    --colo[u]r:加颜色

    -v:反向查找(显示没有被模式匹配到的行)

    -o:只显示被模式匹配到的字符串

    -i:    搜索时不区分字符的大小写

 -E: 扩展正则表达式

二)正则表达式(REGEXP)

即有元字符及正常字符所书写的模式,其中的 元字符不表示字符本身的意义,而是表达控制及通配的功能

基本正则表达式(grep):

案例1:

root@localhost ~]# grep 'root' /etc/passwd
root:x:0:0:root:/root:/bin/bash
operator:x:11:0:operator:/root:/sbin/nologin

1、基本正则表达式元字符

 1)字符匹配

 .      匹配单个字符(只能匹配一个)

[]  匹配指定范围内的任意单个字符

 [^] 匹配指定范围外的任意单个字符

 [[:digit:]] [[:lower:]][[:upper:]] [[:space:]] [[:punct:]] [[:alnum:]] [[:alpha:]]

[root@localhost ~]# grep "[nN][^[:alpha:]]" /etc/rc.d/rc.sysinit

2)次数匹配(在期望匹配的字符后面,提供一个控制符,用于表达匹配其前面的字符匹配的次数)

  *  任意长度 (0次、1次、多次)

  .* 任意字符任意次数

\?  匹配0或1次(其左侧字符可有可无)

  \+ 匹配1次或多次(其左侧字符至少出现1次)

  \{m\}精确匹配m次(其左侧字符精确出现m次)

\{m,n\} 至少m次,至多n次

  \{0,n\} 至多n次

\{m,\}至少m次

3)位置锚定

  ^ 锚定行首

$ 锚定行尾

  ^$: 模式匹配整行内容

   \< 锚定词首 \<pattern

\> 锚定词尾 pattern/>

\</> 匹配整个单词

[root@localhost ~]# ifconfig |grep "\<[0-9]\{2\}\>"

4) 分组

\(\)

注意:分组中的模式,在某次的具体匹配过程中所匹配到的字符,可以被grep记忆(保存到内置的变量中,这些变量是\1,\2)因此,可以被引用

"\(a.b\).*\1"

\1:引用:模式中自左而右,由第一个左括号以及与之对应的右括号的模式所匹配到的内容

\2 引用 模式自左向右,由第二个左括号与之对应的右括号中模式所匹配到的内容

[root@localhost ~]# grep "\(l..e\).*\1" aa.txt

[root@localhost ~]# netstat -tna |grep "LISTEN[[:space:]]*"

[root@localhost ~]# grep "^\([[:alnum:]]\+\)\>.*\1$" /etc/passwd
sync:x:5:0:sync:/sbin:/bin/sync
shutdown:x:6:0:shutdown:/sbin:/sbin/shutdown
halt:x:7:0:halt:/sbin:/sbin/halt
nologin:x:2004:2004::/home/nologin:/sbin/nologin

扩展正则表达式:(egrep)

字符匹配:

  . 匹配任意单个字符

【】括号内的指定字符

 次数匹配:

  * 任意次

  ? 0或1次

  + 至少1次

  {m}:精确匹配m次

  {m,n}:至少m次,至多n次

   {0,n}:至多n次

位置锚定

^  行首

  $   行尾

  \< 词首

  \> 词尾

分组

  ()

  引用:\1,\2

或者: a|b(a或者b)

[root@localhost ~]# grep -E "^(s|S)" /proc/meminfo

[root@localhost ~]# egrep --color "^([[:alnum:]]+\>).*\1$" /etc/passwd
sync:x:5:0:sync:/sbin:/bin/sync
shutdown:x:6:0:shutdown:/sbin:/sbin/shutdown
halt:x:7:0:halt:/sbin:/sbin/halt
nologin:x:2004:2004::/home/nologin:/sbin/nologin

grep及正则表达式的更多相关文章

  1. Linux grep与正则表达式

    grep命令         格式:grep [-acinv] [--color=auto] '查找字符串' filename -a 将binary文件以text文件的 -c 计算找到 ‘查找字符串’ ...

  2. grep和正则表达式

    正则表达式示例表字 符 意 义 示 例* 任意长度的字符串. a* 表示: 空字符串.aaaa.a…? 长度为0或者1的字符串. a? 表示: 空字符串和a.+ 长度为一个或者多个的字符串. a+表示 ...

  3. grep与正则表达式,grep、egrep和fgrep

    grep用法详解:grep与正则表达式 首先要记住的是: 正则表达式与通配符不一样,它们表示的含义并不相同!正则表达式只是一种表示法,只要工具支持这种表示法, 那么该工具就可以处理正则表达式的字符串. ...

  4. 第5天(半天)【shell编程初步、grep及正则表达式】

    第5天(半天)[shell编程初步.grep及正则表达式] shell编程初步(01)_recv shell脚本:文本文件 #!:/bin/bash #!:/usr/bin/python #!:/us ...

  5. [Linux 006]——grep和正则表达式

    在使用系统时,我们或多或少的有一些搜索.查找的需求,必须要在文本中搜索某个关键字,或者过滤出文本中某些特定的行.grep 命令就为我们提供了这样一个功能,同时,grep 还可以使用正则表达式进行匹配, ...

  6. grep与正则表达式使用

    grep简介 grep 是一种强大的文本搜索工具,它能使用正则表达式搜索文本,并把匹配的行打印出来.通常grep有三种版本grep.egrep(等同于grep -E)和fgrep.egrep为扩展的g ...

  7. grep用法详解:grep与正则表达式【转】

    转自:http://blog.csdn.net/hellochenlian/article/details/34088179 grep用法详解:grep与正则表达式 首先要记住的是: 正则表达式与通配 ...

  8. linux初级学习笔记十:linux grep及正则表达式!(视频序号:04_4)

    本节学习的命令:grep 本节学习的技能: grep对文本的匹配 正则表达式的使用 知识点十:grep及正则表达式(4_4) grep,egrep,fgrep: grep: 根据模式搜索文本,并将符合 ...

  9. grep使用正则表达式搜索IP地址

    递归搜索当前目录及其子目录.子目录的子目录……所包含文件是否包含IP地址 grep -r "[[:digit:]]\{1,3\}\.[[:digit:]]\{1,3\}\.[[:digit: ...

  10. Linux文本处理三剑客之grep及正则表达式详解

    Linux文本处理三剑客之grep及正则表达式详解 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 一.Linux文本处理三剑客概述 grep: 全称:"Global se ...

随机推荐

  1. 两个APP之间怎么调用《IT蓝豹》

    两个app之间怎么调用?   (1):通过显示Intent 启动    首先:配置好B app 的action,即AndroidManifest.xml中声明 <intent-filter> ...

  2. 学习C:打印输入中单词长度的水平方向直方图

    #include <stdio.h>#define IN 1#define OUT 0#define MAXWL 16 main() { /*打印输入单词长度的水平直方图*/ int c, ...

  3. python求范数

    import numpy as npa=np.array([[complex(1,-1),3],[2,complex(1,1)]])  print(a)print("矩阵2的范数" ...

  4. yum阿里云镜像源

    阿里云是最近新出的一个镜像源.得益与阿里云的高速发展,这么大的需求,肯定会推出自己的镜像源.阿里云Linux安装镜像源地址:http://mirrors.aliyun.com/ CentOS系统更换软 ...

  5. Linux进程间通信之消息队列

    本文依据以下思路展开,首先从宏观上阐述消息队列的机制,然后以具体代码为例进一步阐述该机制,最后试着畅想一下该通信机制潜在的应用. 消息队列是在两个不相关进程间传递数据的一种简单.高效方式,她独立于发送 ...

  6. 使用Goertzel算法识别DTMF信号

    Goertzel算法 Goertzel算法由Gerald Goertzel在1958年提出,用于数字信号处理,是属于离散傅里叶变换的范畴,目的是从给定的采样中求出某一特定频率信号的能量,用于有效性的评 ...

  7. linux学习笔记--NFS

    NFS分为客户端,服务端.客户端要访问服务端,要写从RPC服务获得端口. 整个流程分为: 1,服务端rpc服务先启动2,nfs服务把端口上报给rpc服务3,rpc客户端通过服务端的rpcbind拿到访 ...

  8. 修改Arduino串口缓冲区大小(转)

    本帖节选自<Arduino程序设计基础>第二版5.1.6串口缓冲区       在之前的示例程序中,我们都是采用人工输入测试数据的方式检验程序效果,Arduino每接收到一次数据,就会将数 ...

  9. iOS错误总结(三)

    1.如果tableView设置为分组的样式(默认是有cell之间的分割线,可以设置颜色),默认有组以及组尾的高度 需要手动在组头组尾的代理方法中进行组高的设置(如果想设置为0,最好写0.01) 2.组 ...

  10. 谈谈Activiti中流程对象之间的关系

    详细见:http://www.kafeitu.me/activiti/2012/03/22/workflow-activiti-action.html (咖啡兔好牛!) 详细见: http://blo ...