基本正则表达式

元数据

意义和范例

^word

搜寻以word开头的行。

例如:搜寻以#开头的脚本注释行

grep –n ‘^#’ regular.txt

word$

搜寻以word结束的行

例如,搜寻以‘.’结束的行

grep –n ‘.$’ regular.txt

.

匹配任意一个字符。

例如:grep –n ‘e.e’ regular.txt

匹配e和e之间有任意一个字符,可以匹配eee,eae,eve,但是不匹配ee。

\

转义字符。

例如:搜寻’,’是一个特殊字符,在正则表达式中有特殊含义。必须要先转义。

grep –n ‘\” regular.txt

*

前面的字符重复0到多次。

例如匹配gle,gogle,google,gooogle等等

grep –n ‘go*gle’ regular.txt

[list]

匹配一系列字符中的一个。

例如:匹配gl,gf。

grep –n ‘g[lf]’ regular.txt

[n1-n2]

匹配一个字符范围中的一个字符。

例如:匹配数字字符

grep –n ‘[0-9]’ regular.txt

[^list]

匹配字符集以外的字符

例如:grep –n ‘[^o]‘ regular.txt

匹配非o字符

\{n1,n2\}

前面的字符重复n1,n2次

例如:匹配google,gooogle。

grep –n ‘go\{2,3\}gle’ regular.txt

\<word

单词是的开头。

例如:匹配以g开头的单词

grep –n ‘\<g’ regular.txt

word\>

匹配单词结尾

例如:匹配以tion结尾的单词

grep –n ‘tion\>’ regular.txt

 

扩展正则表达式

grep一般情况下支持基本正则表达式,可以通过参数-E支持扩展正则表达式,另外grep单独提供了一个扩展命令叫做egrep用来支持扩展正则表达式,这条命令和grep -E等价。虽然一般情况下,基本正则表达式就够用了。特殊情况下,复杂的扩展表达式,可以简化字符串的匹配。

扩展正则表达式就是在基本正则表达式的基础上,增加了一些元数据。

元数据

意义和范例

+

重复前面字符1到多次。

例如:匹配god,good,goood等等字符串。

grep –nE go+d’ regular.txt

?

匹配0或1次前面的字符

例如,匹配gd,god

grep –nE ‘go?d’ regular.txt

|

或(or)的方式匹配多个字串  
例如:grep –nE ‘god|good’ regular.txt

匹配god或者good。

()

匹配整个括号内的字符串,原来都是匹配单个字符

例如:搜寻good或者glad

grep –nE ‘g(oo|la)’ regular.txt

()

前面的字符重复0到多次。

例如匹配gle,gogle,google,gooogle等等

grep –nE ‘go*gle’ regular.txt

1、grep -rn "hello,world!" *

* : 表示当前目录所有文件,也可以是某个文件名

-r 是递归查找

-n 是显示行号

-R 查找所有文件包含子目录

-i 忽略大小写

下面是一些有意思的命令行参数:

grep -i pattern files :不区分大小写地搜索。默认情况区分大小写,

grep -l pattern files :只列出匹配的文件名,

grep -L pattern files :列出不匹配的文件名,

grep -w pattern files :只匹配整个单词,而不是字符串的一部分(如匹配‘magic’,而不是‘magical’),

grep -C number pattern files :匹配的上下文分别显示[number]行,

grep pattern1 | pattern2 files :显示匹配 pattern1 或 pattern2 的行,

grep pattern1 files | grep pattern2 :显示既匹配 pattern1 又匹配 pattern2 的行。

这里还有些用于搜索的特殊符号:

\< 和 \> 分别标注单词的开始与结尾。

例如:

grep man * 会匹配 ‘Batman’、‘manic’、‘man’等,

grep '\<man' * 匹配‘manic’和‘man’,但不是‘Batman’,

grep '\<man\>' 只匹配‘man’,而不是‘Batman’或‘manic’等其他的字符串。

'^':指匹配的字符串在行首,

'$':指匹配的字符串在行尾,

注:“全字匹配”是指匹配的部分两边没有word constituent(字母、数字和下划线),而不是要求匹配的部分全部由word constituent组成,如

eth0和eth0:1: grep -w eth0时两者都会显示,eth0和eth0_1: grep -w eth0时只显示eth0

2,xargs配合grep查找

find -type f -name '*.php'|xargs grep 'GroupRecord'

grep匹配字符串的更多相关文章

  1. grep匹配字符串出现的次数

    背景:想要匹配一个html页面中某个字符出现的次数   遇到的问题: 用grep -c “xxx字符”得到的是行数,如果一行中有多个匹配到的字符,只会算作一个       解决方法: 使用grep - ...

  2. grep:字符串查找

    转自: http://www.cnblogs.com/peida/archive/2012/12/17/2821195.html Linux系统中grep命令是一种强大的文本搜索工具,它能使用正则表达 ...

  3. linux 用grep匹配横线

    file的内容如下: ADSFADSFSDFASDFJKJK----------------------------------------ADSFADSFSDFASDFJKJK----------- ...

  4. 解决java switch……case不能匹配字符串的问题

    java1.7已经支持了匹配字符串 方案1. enum Animal { dog,cat,bear; public static Animal getAnimal(String animal){ re ...

  5. 不区分大小写匹配字符串,并在不改变被匹配字符串的前提下添加html标签

    问题描述:最近在搭建一个开源平台网站,在做一个简单搜索的功能,需要将搜索到的结果中被匹配的字符串添加不一样的颜色,但是又不破坏被匹配的字符串. 使用的方法是替换被匹配的字符串加上font标签.但是搜索 ...

  6. JQUERY选择和操作DOM元素(利用正则表达式的方法匹配字符串中的一部分)

    JQUERY选择和操作DOM元素(利用正则表达式的方法匹配字符串中的一部分) 1.匹配属性的开头 $("[attributeName^='value']"); 2.匹配属性的结尾 ...

  7. js 正则学习小记之匹配字符串

    原文:js 正则学习小记之匹配字符串 今天看了第5章几个例子,有点收获,记录下来当作回顾也当作分享. 关于匹配字符串问题,有很多种类型,今天讨论 js 代码里的字符串匹配.(因为我想学完之后写个语法高 ...

  8. js 正则学习小记之匹配字符串优化篇

    原文:js 正则学习小记之匹配字符串优化篇 昨天在<js 正则学习小记之匹配字符串>谈到 个字符,除了第一个 个,只有 个转义( 个字符),所以 次,只有 次成功.这 次匹配失败,需要回溯 ...

  9. Rolling Hash(Rabin-Karp算法)匹配字符串

    您可以在我的个人博客中访问此篇文章: http://acbingo.cn/2015/08/09/Rolling%20Hash(Rabin-Karp%E7%AE%97%E6%B3%95)%E5%8C%B ...

随机推荐

  1. 理解 CI 和 CD 之间的区别(翻译)

    博客搬迁至https://blog.wangjiegulu.com RSS订阅:https://blog.wangjiegulu.com/feed.xml 原文链接:https://blog.wang ...

  2. Introducing Apache Spark Datasets(中英双语)

    文章标题 Introducing Apache Spark Datasets 作者介绍 Michael Armbrust, Wenchen Fan, Reynold Xin and Matei Zah ...

  3. 用virsh console vhosts 卡住

    [root@666 ok]# virsh list --all Id Name State ---------------------------------------------------- 1 ...

  4. HTML5学习笔记(二十九):Cookie和Session

    HTTP协议本身是无状态的,这和HTTP最初的设计是相符的,每次请求都是创建一个短连接,发送请求,得到数据后就关闭连接.即每次连接都是独立的一次连接. 这样的话,导致的问题就是当我在一个页面登陆了账号 ...

  5. pandas DataFrame apply()函数(1)

    之前已经写过pandas DataFrame applymap()函数 还有pandas数组(pandas Series)-(5)apply方法自定义函数 pandas DataFrame 的 app ...

  6. iis asp.net4.0注册

    asp.net4.0下载地址:https://download.microsoft.com/download/9/5/A/95A9616B-7A37-4AF6-BC36-D6EA96C8DAAE/do ...

  7. 解决Warning Couldn't flush user prefs: java.util.prefs.BackingStoreException: Couldn't get file lock.

    系统:Ubuntu 16.04 LTS 环境:vscode+java extension pack打开了一个gradle的java项目:另外,用一个terminal启动了groovysh 报错: gr ...

  8. Git进阶用法

    Git高阶用法 1. 基本概念 你的本地仓库由Git维护的三棵树组成.第一个是你的工作目录,它持有实际文件:第二个是缓存区(Index),它像个缓存区域,临时保存您的改动:最后是HEAD,指向你最近一 ...

  9. BrainFuck 指令

    BrainFuck只有八条指令: 指令 含义 等价的C代码 > 指针加一 ++ptr; < 指针减一 --ptr; + 指针指向的字节的值加一 ++*ptr; - 指针指向的字节的值减一 ...

  10. 启动matlab时总是直接跳转到安装界面的解决方案

    [关于2017双11过后MATLAB许可过期问题的解决方案] 在距离双11还有2个月之前,matlab会提示:Your MATLAB license will expire in 50 days -- ...