• Linux入门(三)


    Linux grep 命令

    1: 作用

    ​ grep是一种文本搜索工具,它能使用特定的搜索模式,包括[正则表达式]搜索文本,并默认输出匹配行。

    ​ windows类似的命令是findstr.

    2:语法

    grep -options(参数) pattern(关键词) files(文本文件)
    
    • 1

    3:主要参数

    可以通过grep --help来查看grep相关命令

    用法: grep [选项]... 模式 [文件]...
    在每个<文件>中查找给定<模式>。
    例如:grep -i 'hello world' menu.h main.c
    <模式>可以包括多个模式字符串,使用换行符进行分隔。
    
    模式选择与解释:
      -E, --extended-regexp     <模式> 是扩展正则表达式
      -F, --fixed-strings       <模式> 是字符串
      -G, --basic-regexp        <模式> 是基本正则表达式
      -P, --perl-regexp         <模式>Perl 正则表达式
      -e, --regexp=<模式>       用指定的<模式>字符串来进行匹配操作
      -f, --file=<文件>         从给定<文件>中取得<模式>
      -i, --ignore-case         在模式和数据中忽略大小写
          --no-ignore-case      不要忽略大小写(默认)
      -w, --word-regexp         强制<模式>仅完全匹配字词
      -x, --line-regexp         强制<模式>仅完全匹配整行
      -z, --null-data           数据行以一个 0 字节结束,而非换行符
    
    杂项:
      -s, --no-messages         不显示错误信息
      -v, --invert-match        选中不匹配的行
      -V, --version             显示版本信息并退出
          --help                显示此帮助并退出
    
    输出控制:
      -m, --max-count=<次数>    得到给定<次数>次匹配后停止
      -b, --byte-offset         输出的同时打印字节偏移
      -n, --line-number         输出的同时打印行号
          --line-buffered       每行输出后刷新输出缓冲区
      -H, --with-filename       为输出行打印文件名
      -h, --no-filename         输出时不显示文件名前缀
          --label=<标签>        将给定<标签>作为标准输入文件名前缀
      -o, --only-matching       只显示行中非空匹配部分
      -q, --quiet, --silent     不显示所有常规输出
          --binary-files=TYPE   设定二进制文件的 TYPE(类型);
                                TYPE 可以是 'binary''text' 或 'without-match'
      -a, --text                等同于 --binary-files=text
      -I                        等同于 --binary-files=without-match
      -d, --directories=ACTION  读取目录的方式;
                                ACTION 可以是`read', `recurse',或`skip'
      -D, --devices=ACTION      读取设备、先入先出队列、套接字的方式;
                                ACTION 可以是`read'或`skip'
      -r, --recursive           等同于--directories=recurse
      -R, --dereference-recursive       同上,但遍历所有符号链接
          --include=GLOB        只查找匹配 GLOB(文件模式)的文件
          --exclude=GLOB        跳过匹配 GLOB 的文件
          --exclude-from=FILE   跳过所有匹配给定文件内容中任意模式的文件
          --exclude-dir=GLOB    跳过所有匹配 GLOB 的目录
      -L, --files-without-match  只打印没有匹配上的<文件>的名称
      -l, --files-with-matches  只打印有匹配的<文件>的名称
      -c, --count               只打印每个<文件>中的匹配行数目
      -T, --initial-tab         行首制表符对齐(如有必要)
      -Z, --null<文件>名最后打印空字符
    
    文件控制:
      -B, --before-context=NUM  打印文本及其前面NUM-A, --after-context=NUM   打印文本及其后面NUM-C, --context=NUM         打印NUM 行输出文本
      -NUM                      等同于 --context=NUM
          --color[=WHEN],
          --colour[=WHEN]       使用标记高亮匹配字串;
                                WHEN 可以是“always”、“never”或“auto”
      -U, --binary              不要清除行尾的 CR 字符(MSDOS/Windows)
    
    若给定<文件>为“-”,则从读取标准输入。  若无<文件>参数,则除非处于
    递归工作模式视为从“.”读取之外,一律视为从“-”读取。如果提供了少于
    两个<文件>参数,则默认启用 -h 选项。如果有任意行(或者指定了 -L 选项
    并有任意文件)被匹配,则退出状态为 0,否则为 1;如果有错误产生,且未指
    定 -q 参数,则退出状态为 2
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27
    • 28
    • 29
    • 30
    • 31
    • 32
    • 33
    • 34
    • 35
    • 36
    • 37
    • 38
    • 39
    • 40
    • 41
    • 42
    • 43
    • 44
    • 45
    • 46
    • 47
    • 48
    • 49
    • 50
    • 51
    • 52
    • 53
    • 54
    • 55
    • 56
    • 57
    • 58
    • 59
    • 60
    • 61
    • 62
    • 63
    • 64
    • 65
    • 66
    • 67
    • 68
    • 69

    4:示例

    创建test.txt文件,写入部分内容如下:

    请将错误报告给:bug-grep@gnu.org。翻译问题请报告至 。
    GNU grep 主页: 
    GNU 软件的通用帮助: 
    
    • 1
    • 2
    • 3
    4.1过滤基础文件
    ls |grep test
    
    • 1

    grep过滤当前目录下test文件夹/文件。

    4.2 忽略大小写
    grep -i  "gnu" test.txt
    
    • 1

    在这里插入图片描述

    grep -i --no-ignore-case  "gnu" test.txt
    
    • 1

    在这里插入图片描述

    4.3 显示行数以及命中行的文件
    grep -n "gnu" test.txt
    
    • 1

    在这里插入图片描述

    grep -n "错误" test.txt
    
    • 1

    在这里插入图片描述

    4.4 选中不匹配的行
    grep -v "错误" test.txt
    
    • 1

    在这里插入图片描述

    4.5 得到给定<次数>次匹配后停止
    grep -m 1  "gnu" test.txt
    
    • 1

    匹配到一次后停止:在这里插入图片描述

    grep -m 10  "gnu" test.txt
    
    • 1

    在这里插入图片描述

  • 相关阅读:
    Python Language Megadoc
    VS 2015社区版下载链接
    Metasploit
    GDPU 数据结构 天码行空9
    springboot项目:加入购物车
    前端学习-BFC,作用和原理,typeof,parseIntString()函数,Boolean()函数,深浅克隆
    ROS自学笔记十七:Arbotix
    osg学习-1《绘制基本单元》
    Redis第十二讲:如何保证数据一致性、缓存设计模式、缓存穿透问题解决
    浅析kubernetes中client-go Informer
  • 原文地址:https://blog.csdn.net/qq_23025319/article/details/134468711