zoukankan      html  css  js  c++  java
  • grep匹配字符串

    基本正则表达式

    元数据

    意义和范例

    ^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'

  • 相关阅读:
    XML和解析
    代理模式
    net-snmp配置文件snmp.conf
    tomcat-在eclispe中配置远程调试
    tomcat-在eclipse中配置tomcat容器的内存
    web项目跨域访问
    STS-创建spring配置文件
    STS-新建mvc工程--helloworld
    STS-新建spring mvc项目
    Eclipse-安装Spring Tool Suit 插件
  • 原文地址:https://www.cnblogs.com/wangliangblog/p/9729104.html
Copyright © 2011-2022 走看看