文本搜索工具:grep, egrep
    根据用户指定的模式对目标文件进行过滤,显示被模式匹配到的行
    grep [OPTION]... 'PATTERN' FILE...
          --color
   
    难点在于模式如何书写,模式主要是应用正则表达式
    正则表达式:由一类字符书写的模式,其中有些字符不表示字符的字面意义,
                而是表示控制或者统配的功能
        元字符:*, ?等
        两类:
            基本正则表达式
            扩展正则表达式
       
    基本正则表达式:
        字符匹配:
            .: 匹配任意单个字符
                例如:grep --color 'r..t' /etc/passwd
                        匹配到r开头,t结尾,中间间隔两个字符的行
           
            []:匹配指定集合中任意单个字符
                [[:digit:]],[0-9]
                [[:lower:]],[a-z]
                [[:upper:]],[A-Z]
                [[:alpha:]],[a-zA-Z]
                [[:alnum:]],[0-9a-zA-Z]
                [[:space:]]
                [[:punct:]]
                例如:grep --color 'abcd[[:digit:]][[:digit:]][0-9]' test
                        匹配以abcd开头,后边跟三个数字的行
               
            [^]:匹配指定集合外的任意单个字符           
                    例如:grep --color 'abcd[^[:digit:]]' test
                          grep --color 'abcd[^0-9]' test
                            匹配以abcd开头,后边不是数字的行
       
        匹配次数:用于对其前面紧邻的字符所能够出现的次数作出限定
            *:匹配其前面的字符任意次,0,1或多次
                例如:grep 'x*y'
                        xy,xxy,xxxy,y
                   
            \?:匹配其前面的字符0次或1次,其中的\为转义字符,即转移?
                例如:grep 'x\?y'
                        xy,xxy,y,xxxy,aby 对于xxy而言,确实匹配到了xy,第一个x是被忽略的
           
            \+:匹配其前面的字符出现至少一次
                例如:grep 'x\+y'
                        xy,xxy,xxxy
           
            \{m\}:匹配前面字符m次
                例如:grep 'x\{2\}y'
                        xxy,xxxy
           
            \{m,n\}:匹配其前面字符至少出现m次,至多出现n次
                例如:grep 'x\{2,4\}y'
                        xxy, xxxy
                      grep 'x\{2,\}y'
                        xxy,xxxy
           
            .*:匹配任意长度的任意字符
       
        位置锚定:
            ^: 行首锚定
                写在模式的最左侧
                例如:grep --color '^abcd' /etc/passwd
                        匹配以abcd开头的行
               
            $: 行尾锚定
                写在模式的最右侧
                例如:grep --color '[0-9]$' /etc/passwd
                        匹配以数字结尾的行
               
            ^$:空白行
                例如:grep --color '^$' /etc/passwd
                        匹配空白行
           
            \<: 词首锚定, \b, \为转义字符
                出现在要查找的单词模式的左侧,\<char
                例如:grep --color '\<r' /etc/passwd
                        匹配以r开头的单词
               
            \>: 词尾锚定, \b,\为转义字符
                出现在要查找的单词模式的右侧,char\>
                例如:grep --color 'tor\>' /etc/passwd
                        匹配以tor结尾的单词
               
            \<pattern\>:匹配单词
                例如:grep --color '\<root\>' /etc/passwd
                        匹配单词root
       
        分组:
            \(\)
            后向引用:模式中,如果使用\(\)实现了分组,在某行文本的检查中,
                    如果\(\)的模式匹配到了某内容,此内容后面的模式中可以被引用;
                \1,\2,\3
                模式自左向右,引用第#个左括号以及与其匹配右括号之间的模式匹配到的内容
               
            例如:grep --color 'ab\{1,\}y' test
                    a与y之间至少一次b
                  grep --color '\(ab\)\{1,\}y' test
                    y之前至少一次ab
                  grep --color '\(ab\)\{1,\}y\1' test
                    y之前至少一次ab,且后边引用第一个分组
                  grep --color '\(ab\)\{1,\}y\2' test
                    y之前至少一次ab,且后边引用第二个分组
               
    grep选项:
        -v: 反向选取,即显示模式匹配之外的行
            例如:grep -v --color 'abcd' test
                    显示abcd之外的行
        -o: 仅显示匹配到的内容
        -i: 忽略字符大小写
        -n: 匹配的同时显示行号
        -E: 使用扩展正则表达式
        -A #:匹配到的下边#行
            例如:grep -A 2 --color 'abcd' test
                    显示匹配abcd的行及其下边两行,共三行
        -B #:匹配到的上边#行
        -C #:匹配到的上下边#行
   
    egrep及扩展的正则表达式
        扩展正则表达式的元字符
            字符匹配:
                .
                []
                [^]
               
            匹配次数限定:
                *
                ?: 匹配其前面字符0次或1次
                +:匹配其前面字符至少1次
                {m}:匹配其前面字符m次
                {m,n}:{m,},{0,n}
           
            锚定:
                ^
                $
                \<, \>: \b
           
            分组:
                ()
                支持后向引用:\1, \2...
           
            或者:
                a|b: a或者b
                ab|cd:
                例如: egrep --color 'ab|c' test
                       grep --color 'ab\|c' test
                        匹配含有ab或者c的行
                       grep --color 'a\(b\|c\)' test
                        匹配含有ab或者ac的行
                       
        例如:grep -E 'PATTERN' FILE...
              egrep 'PATTERN' FILE...

文本搜索grep知识点总结的更多相关文章

  1. CentOS 文本搜索grep

    grep 用于在文本中执行关键词搜索, 用法: grep [选项]... PATTERN [FILE]... [root@bigdata-senior01 ~]# grep "ftp&quo ...

  2. 整理grep实战文本搜索过滤技巧

    一:grep的简介: 文本搜索工具,根据用户指定的文本模式对目标文件进行逐行搜索,显示能够被模式所匹配到的行.配合正则表达式的使用可以实现强大的文本处理.下面一一说明正则的例子. 二:文本处理工具分类 ...

  3. [linux] grep 文本搜索工具

    grep [option] pattern file Linux系统中grep命令是一种强大的文本搜索工具,它能使用正则表达式搜索文本,并把匹配的行打印出来.grep全称是Global Regular ...

  4. shell脚本学习指南-grep文本搜索命令-学习(3)

    1.作用 Linux系统中grep命令是一种强大的文本搜索工具,它能使用正则表达式搜索文本,并把匹 配的行打印出来.grep全称是Global Regular Expression Print,表示全 ...

  5. grep文本搜索工具详解

    ############grep命令############这个命令属于文本处理三大命令之一,强大的文本搜索工具(贪婪模式)全面搜索正则表达式并把行打印出来)是一种强大的文本搜索工具,它能使用正则表达 ...

  6. 二、grep文本搜索工具

    grep命令作为Unix中用于文本搜索的神奇工具,能够接受正则表达式,生成各种格式的输出.除此外,它还有大量有趣的选项. # 搜索包含特定模式的文本行: [root@centos8 ~]#grep p ...

  7. 基于文本图形(ncurses)的文本搜索工具 ncgrep

    背景 作为一个VIM党,日常工作开发中,会经常利用grep进行关键词搜索,以快速定位到文件.如图: 利用grep进行文本搜索 但是,这一过程会有两个效率问题: 展示的结果无法进行直接交互,需要手动粘贴 ...

  8. linux下的文本操作之 文本查找——grep

    摘要:你有没有这样的应用场景:调试一个程序,出现debug的提示信息,现在你需要定位是哪个文件包含了这个debug信息,也就是说,你需要在一个目录下的多个文件(可能包含子目录)中查找某个字符串的位置: ...

  9. (办公)记事本_grep文本搜索命令

    参考谷粒学院的linux视频教程:http://www.gulixueyuan.com/course/300/task/7091/show grep文本搜索命令:[是一种强大的文本搜索工具,它能使用正 ...

随机推荐

  1. Java EE学习笔记(三)

    Spring AOP 1.Spring AOP简介 1).AOP的全称是Aspect-Oriented Programming,即面向切面编程(也称面向方面编程).它是面向对象编程(OOP)的一种补充 ...

  2. Elasticsearch之入门知识

    elasticsearch是一个高度可扩展得开源全文搜索和分析的引擎.可以快速.近实时的存储,搜索和分析大量数据.通常用作底层引擎技术,为具有复杂搜索功能和要求的程序提供支持. 用处: • 运行网上商 ...

  3. 转 用好HugePage,告别Linux性能故障

    超过32G 的数据库,可以是使用如下方法配置. ######### Slow Performance with High CPU Usage on 64-bit Linux with Large SG ...

  4. nodejs 学习(4) express+mongoose

    一.关于安装和启动: 1.设置环境变量:D:\Program Files\MongoDB\bin 2.启动时需要cd到bin 目录,然后 mongod --dbpath "D:\mongdb ...

  5. 2566. [51nod 1129] 字符串最大值

    [题目描述] 一个字符串的前缀是指包含该字符第一个字母的连续子串,例如:abcd的所有前缀为a, ab, abc, abcd. 给出一个字符串S,求其所有前缀中,字符长度与出现次数的乘积的最大值. 例 ...

  6. uvm_factory——我们的工厂(三)

    现在让我们回过头来想想factory 是用来干什么,它做了什么? fantory就是生产uvm_object 和 uvm_component.用factory 生产和用SV直接new有什么区别了? f ...

  7. CPU性能的评价

    人们通常用benchmark 来衡量CPU的性能,常见的benchmark有dhrystone和coremark. 由于dhrystone 受编译器影响比较大,所以,结果不是很准确,现在大多采用cor ...

  8. xp密钥

    Windows XP 专业版 : CCC64-69Q48-Y3KWW-8V9GV-TVKRM

  9. Grace Huang 2017/1/11

    原文 This actress becomes each character she plays Grace Huang has no interested in doing same thing y ...

  10. Bootstrap 入门到精通

    介绍 Bootstrap,来自 Twitter,是目前最受欢迎的前端框架.Bootstrap 是基于 HTML.CSS.JAVASCRIPT 的,它简洁灵活,使得 Web 开发更加快捷.Bootstr ...