grep, egrep, fgrep - print lines matching a pattern

  SYNOPSIS
    grep [OPTIONS] PATTERN [FILE...]
    grep [OPTIONS] [-e PATTERN | -f FILE] [FILE...]

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

1. 常用选项:

  -E, --extended-regexp: Interpret PATTERN as an extended regular expression.   # 开启扩展(Extend)的正则表达式

  -i, --ignore-case: Ignore case distinctions in both the PATTERN and the input files.   # 忽略大小写

  -v, --invert-match: Invert the sense of matching, to select non-matching lines.  # 反过来,只打印没有匹配的,而匹配的反而不打印

-n, --line-number: Prefix each line of output with the 1-based line number within its input file.  # 显示行号

  -w, --word-regexp  # 被匹配的文本只能是单词,而不能是单词中的某一部分,如文本中有liker,而我搜寻的只是like,就可以使用-w选项来避免匹配liker

    Select only those lines containing matches that form whole words. The test is that the matching substring must either be at the beginning of the line, or preceded by a non-word

    constituent character. Similarly, it must be either at the end of the line or followed by a non-word constituent character. Word-constituent characters are letters, digits, and the
    underscore.

  -c, --count: Suppress normal output; instead print a count of matching lines for each input file.  # 显示总共有多少行被匹配到了,而不是显示被匹配到的内容,注意如果同时使用-cv选项是显示有多少行没有被匹配到。

  -o, --only-matching: Print only the matched (non-empty) parts of a matching line, with each such part on a separate output line.  # 只显示被模式匹配到的字符串。

  -A NUM, --after-context=NUM: Print NUM lines of trailing context after matching lines.   # 显示匹配到的字符串所在的行及其后NUM行

  -B NUM, --before-context=NUM: Print NUM lines of leading context before matching lines.  # 显示匹配到的字符串所在的行及其前NUM行

  -C NUM, -NUM, --context=NUM: Print NUM lines of output context.  # 显示匹配到的字符串所在的行及其前后各NUM行

2. 模式部分:

  (a)基本正则表达式

    匹配字符

      .  : 任意一个字符

      [abc] : 表示匹配[abc]中任意一个字符

      [a-zA-Z] : 匹配a-z或A-Z之间任意一个字符

      [^123] : 匹配123之外的任意一个字符

  

      对于常用的字符集,系统定义如下:

        [a-zA-Z] <=> [[:alpha:]]

        [0-9] <=> [[:digit:]]

        [a-zA-Z0-9] <=> [[:alnum:]]

        tab,space <=> [[:space:]]

        [A-Z] <=> [[:upper:]]

        [a-Z] <=> [[:lower:]]

        标点符号 <=> [[:punct:]]      

    

    匹配次数:

      \{m,n\} : 匹配其前出现的字符至少m次,至多n次

      \? : 匹配其前出现的内容0次或1次,等价于\{0,1\}

      * : 匹配其前出现的内容任意次,等价于\{0,\} ,所以".*"表示任意字符任意次 

    位置锚定:

      ^ : 锚定行首

      $ : 锚定行尾。 常用技巧 "^$"匹配空白行

      \b或者\<: 锚定单词的词首。 如"\blike" 不会匹配alike,但是会匹配liker

      \b或者\> : 锚定单词的词尾。 如\blike\b 不会匹配alike或者liker,只会匹配like

      \B : 与\b作用相反

    分组及引用:

      \(string\) : 将string作为一个整体方便后面引用

      \n : 引用第n个左括号及其对应的右括号所匹配的内容

3. 扩展的(Extend)正则表达式:

  匹配字符: 这部分和基本正则表达式一致

  匹配次数:

    * : 和基本正则表达式一致

    ? :  相比基本正则表达式没有\

    {m,n} : 相比基本正则没有\

    + : 匹配其前面的字符至少一次,相当于{1,}

  位置锚定: 这部分和基本正则表达式一致

  分组及引用: 

    (string) : 相比基本正则表达式没有\

    \n : 和正则表达式一样

  或者:

    a|b : 匹配a或者b, 注意a是指 | 的左边的整体,b也同理,比如C|cat,表示的是C或者cat,而不是Cat或者cat,如果要表示Cat或者cat,则应该写为(C|c)at。(String)除了用于引用还用于分组

    

注1:默认情况下,正则表达式的匹配工作在贪婪模式下,也就是说它会尽可能长地去匹配,比如某一行有字符串 abacb,如果搜索内容为 "a.*b" 那么会直接匹配 abacb这个串,而不会只匹配ab或acb。

注2:所有的正则字符,如 [ 、* 、( 等,若要搜索 * ,而不是想把 * 解释为重复先前字符任意次,可以使用 \* 来转义。

linux命令系列 grep的更多相关文章

  1. (5)ps详解 (每周一个linux命令系列)

    (5)ps详解 (每周一个linux命令系列) linux命令 ps详解 引言:今天的命令是用来看进程状态的ps命令 ps 我们先看man ps ps - report a snapshot of t ...

  2. Linux命令系列之ls——原来最简单的ls这么复杂

    Linux命令系列之ls--原来最简单的ls这么复杂 ls命令应该是我们最常用的命令之一了,但是我们可能容易忽略那些看起来最简单的东西. 简介 ls命令的使用格式如下 ls [选项] [具体的文件] ...

  3. (4)top详解 (每周一个linux命令系列)

    (4)top详解 (每周一个linux命令系列) linux命令 top详解 引言:今天的命令是用来看cpu信息的top top 我们先看man top top - display Linux pro ...

  4. (3)lscpu详解 (每周一个linux命令系列)

    (3)lscpu详解 (每周一个linux命令系列) linux命令 lscpu详解 引言:今天的命令是用来看cpu信息的lscpu lscpu 我们先看man lscpu display infor ...

  5. (2)free详解 (每周一个linux命令系列)

    (2)free详解 (每周一个linux命令系列) linux命令 free详解 引言:今天的命令是用来看内存的free free 换一个套路,我们先看man free中对free的描述: Displ ...

  6. Linux命令系列之top——里面藏着很多鲜为人知的宝藏知识

    Linux命令系列之top--里面藏着很多鲜为人知的宝藏知识 简介 top命令是我们经常用来查看系统信息的一个指令,它提供了一个动态的而且是实时的借口帮助我们去查看系统执行时的进程.线程和系统参数的信 ...

  7. 【linux命令】grep

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

  8. linux命令之grep用法介绍

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

  9. 每天一个linux命令(51)--grep命令

    linux系统中grep 命令是一种强大的文本搜索工具,它能使用正则表达式搜索文本,并把匹配的行打印出来.grep 全称是 global regular expression print,表示全局正则 ...

随机推荐

  1. 【转】纯JS省市区三级联动(行政区划代码更新至2015-9-30)

    本文代码实现的功能是省市区三级联动下拉列表,纯Javascript,网上已有很多这方面的代码.但是作为一个新手,这是我的第一篇CSDN博客,发此文的目的主要是学习交流,希望看到的朋友发现有什么不对的地 ...

  2. Visual Studio 2012 编译错误【error C4996: 'scanf': This function or variable may be unsafe. 】的解决方案

    在VS 2012 中编译 C 语言项目,如果使用了 scanf 函数,编译时便会提示如下错误: error C4996: 'scanf': This function or variable may ...

  3. 【游记】NOIP2018 退役滚粗记

    day0 早上6点半到机房 又复习了一下还没看的板子 刷了2道水题练手感 结果还是肛起了fgo 早上单抽出梅林 美滋滋 感觉把两天的RP都用光了 早上坐上了去福州的动车 一路上说说笑笑 自信满满 下午 ...

  4. [转载]AVFormatContext结构体详细分析

        AVFormatContext描述一个媒体文件或媒体流的构成和基本信息. 这是FFMpeg中最为基本的一个结构,是其他所有结构的根,是一个多媒体文件或流的根本抽象.其中nb_streams和s ...

  5. C++内存管理变革(6):通用型垃圾回收器 - ScopeAlloc

    本文已经迁移到:http://cpp.winxgui.com/cn:a-general-gc-allocator-scopealloc C++内存管理变革(6):通用型垃圾回收器 - ScopeAll ...

  6. 沟通修炼 I型沟通->U型沟通

    沟通的目的 来源:邀请你看<01课 沟通管理:学会U型沟通,沟通效率翻倍>https://url.cn/51YaHrq?sf=uri 案例: 女友太困,不想早起去上班 你的回答? 正确做法 ...

  7. java官网门户源码 SSM框架 自适应-响应式 freemarker 静态模版引擎

    来源:http://www.fhadmin.org/webnewsdetail3.html 前台:支持(5+1[时尚单页风格])六套模版,可以在后台切换 官网:www.fhadmin.org 系统介绍 ...

  8. Mysql5.7登录错误1045和1130的解决方法,亲测有用,希望能帮助到你们。

    Mysql (针对Mysql5.7版本,其他版本可能略有不同) 错误:1045 解决方法: 以管理员身份运行cmd(win8系统:win+x 键 ,再按 A键 ),进入Mysql安装目录下的bin目录 ...

  9. 从0开始学golang--2.2--如何去爬园子的数据👉进阶篇,面向对象的单任务版

    执行页main.go-----------------------------------代码

  10. nginx多域名同IP同80端口配置

    http://blog.csdn.net/webnoties/article/details/37597959 vi /etc/nginx/nginx.conf 里面有这2句话: include /e ...