给自己提出以下6个问题,看自己是否真正掌握了grep

[1] grep 是什么?

[2] grep 有什么作用 ?

[4] grep 常用于何处 ?

[5] grep 的基本用法 ?

[6] grep 实例用法 ?

[6] grep 技术常用【收藏】


[1] grep 是什么?

  • grep是一个文本搜索工具;
  • grep (global regular expression print,全局正则表达式输出) 的搜索工具; 
它的家族有三大类:grep 、egrep  、fgrep 
    通常我们可以这样认为:  egrap相当于grap -E , fgrap 相当于 grap -F
    egrep其实是grap的优化版,改良了许多传统 grep 不能或不便的操作:
    例如:
    grep 之下不支持 ? 与 + 这两种 modifier, 但 egrep 则可。
    grep 不支持 a|b 或 (abc|xyz) 这类"或一"比对, 但 egrep 则可。
    grep 在处理 {n,m} 时, 需用 \{ 与 \} 处理, 但 egrep 则不需。
     fgrap 不作RE处理,表达式仅作一般字符串处理,所有meta失去功能

【2】grep 的作用?

  • grep 最大的作用就是它得搜索功能!将匹配到内容这一行输出,即搜索到的内容列出,并不会改动里面内容,并且不能根据目录进行搜索;
比如:one.c内容
void class()
{
  printf("oneone");
}

grep "class" one.c
- void class() //结果

若是用grap进行目录搜索会报错
grap "class" ./
grep: ./: Is a directory

【3】grep 常用于何处 ?

常用于文件搜索

【5】grep 的基本用法?

grep "搜索内容"  搜索文本

这里很值得深入思考的是,grep后面跟着双引号,单引号,不带引号,有什么区别?

以及,grep的正则表达式后面跟着双引号,单引号又有什么区别? 可以不带引号吗?

为此我也研究了很久,得出结论

grep “linux"  oytt.c  //双引号

  

grep 'linux'  oytt.c  //单引号

 单引号是将引号的内容原封不动的搜索出来

grep linux    oytt.c  //不带引号

  这样写和上面两种区别不大,但是若是想搜索有空格的子的字符串就无能为力了,比如想在oytt.c文件中搜索含有oytt younger的文字

grep oytt younger oytt.c就会报错No such file or directory

因此若是搜索连续的字符串,数字,变量,和单引号的效果是一样的,若是想搜索非连续的,则需要用单引号或者双引号。

-e : 使用正则搜索
-i : 不区分大小写
-v : 查找不包含指定内容的行
-w: 按单词搜索
-c: 统计匹配到的次数
-n: 显示行号
-r: 逐层遍历目录查找
-A: 显示匹配行及后面多少行, 如: -A3, 则表示显示匹配行及后3行
-B: 显示匹配行及前面多少行, 如: -B3, 则表示显示匹配行及前3行
-C: 显示匹配行前后多少行, 如: -C3, 则表示显示批量行前后3行
--color: 匹配到的内容高亮显示
--include: 指定匹配的文件类型
--exclude: 过滤不需要匹配的文件类型

【6】grep 的实例用法【收藏】

    1. grep -A

    2. 显示行号之后的行号

      1. grep -A 'one' oytt.txt

      2. grep -A / grep -B/ grep -C 都是一套类似的用法

    3. grep -a

    4. 二进制文件不被忽略

      1. grep -a 'one' oytt.txt

      2. Binary file one.c matches 若是有这种报错情况,就需要grep -a

    5. grep -v

    6. 反向查找,也就是输出不包含指定的内容

      1. grep -v 'one' oytt.txt

      2. 输出除了one以外的其它数据

      3. 可以配合其它语句使用 cat oytt.txt | grep -v 'one' 非常实用

    7. grep -l

    8. 列出包含该内容的文集

      1. grep -l oytt1.txt oytt2.txt

      2. 不能根据路径,必须一一把文件列出来

    9. grep -n

    10. 匹配行号

      1. grep -n 'one' oytt.txt

    11. grep -e

      1. grep -e 'one' -e 'two' oytt.txt
      2. 同时查找多个目标
    12. grep -c 计算匹配到的行数量

      1. grep -c 'one' oytt.txt  //结果:1
    13. grep -w

      1. grep -w "one" oytt.txt

      2. 整个字符串匹配,只能搜到到one的单词,而不能搜索到类似oneFunc的单词

(一)linux三剑客之grep的更多相关文章

  1. (转)不看绝对后悔的Linux三剑客之grep实战精讲

    不看绝对后悔的Linux三剑客之grep实战精讲 原文:http://blog.51cto.com/hujiangtao/1923675 https://www.cnblogs.com/peida/a ...

  2. Linux 三剑客之grep

    目录 Linux 三剑客之grep 搭配命令-find 三剑客之grep: 正则表达式: Linux 三剑客之grep 搭配命令-find find命令是根据文件的名称或者属性查找文件,并不会显示文件 ...

  3. linux三剑客之grep

    linux基础三剑客之grep 1.grep命令 基本介绍 grep命令是文本本过滤工具,是基于一个模式匹配文件的每一行,grep分类:egrep个fgrep. grep英文名:Global  sea ...

  4. Linux三剑客之grep常用参数详细总结

    三剑客grep总结 grep  : Linux三剑客老三      过滤需要的内容 参数: grep一般常用参数: -a :在二进制文件中,以文本文件的方式搜索数据 -c :计算找到 ’ 搜索字符串 ...

  5. Linux三剑客老三---grep

    1.Linux三剑客老三 过滤需要的内容,例子:grep -v oldboy hello.txt grep一般常用参数: -a:在二进制文件中,以文本文件的方式搜索数据. -c:计算找到"搜 ...

  6. Linux三剑客之grep 与 egrep

    grep: Linux上文本处理三剑客 grep:文本过滤(模式:pattern)工具; *(grep, egrep, fgrep) sed:stream editor,文本编辑工具: awk:Lin ...

  7. linux三剑客之一grep

    正则表达式(Regular Expression) 目录 起源 正则表达式是什么? 两类基本正则表达式 正则表达式元字符 Linux上文本三剑客 小试牛刀 总结 一.起源   正则表达式这个名词,相信 ...

  8. Linux三剑客:grep、awk、sed

    ---------------------------------------------------------------------------------------------------- ...

  9. Linux 三剑客之 grep 使用详解

    Linux 最重要的三个命令在业界被称为三剑客,它们是:awk.sed.grep.sed 已经在上篇中讲过,本文要讲的是 grep 命令. 我们在使用 Linux 系统中,grep 命令的使用尤为频繁 ...

  10. linux 三剑客命令(grep,sed ,awk)

    grep 命令 :强大的文本’搜索’工具    1.grep   -n   'word'  file_name 在file_name文件中找到word所在的所有行并显示.-n 为显示行号.     2 ...

随机推荐

  1. Python 常用编码规范

    一.简明概述 1.编码 如无特殊情况, 文件一律使用 UTF-8 编码 如无特殊情况, 文件头部必须加入#-*-coding:utf-8-*-标识 2.代码格式 2.1.缩进 统一使用 4 个空格进行 ...

  2. python re 里面match 和search的区别

    re.match()从开头开始匹配string. re.search()从anywhere 来匹配string. 例子: >>> re.match("c", &q ...

  3. MySQL常见面试题索引、表设计

    正确使用索引的条件 1.建立索引的列的重复度不能太高 2.条件列不能参与计算 3.不能使用函数 4.条件中不能使用范围 5.不要使用like '%c' 6.条件中用or a=0 or b=1 or c ...

  4. RenderBox使用说明书&原理浅析

    本文基于1.12.13+hotfix.8版本源码分析. 0.目录 一.RenderBox的用法 1.RenderBox的使用基本流程 2.RenderObjectWidget 3.非容器控件的hitT ...

  5. Scaner对象

    目录 Scaner的基本概念 基本语法: 1.使用next() 的方式来接收字符串(使用频率较少) 2.使用nextLine()的方式来接收字符串 进阶使用(练习题) Scaner的基本概念 之前我们 ...

  6. 针对移动端开发的响应式 Jekyll 主题

    simple 这是针对移动端开发的响应式 Jekyll 主题,效果看 demo,源码在 GitHub,觉得不错点个 star. 主题特性包括但不限于: 在线编辑.新建.发布文章 GitHub 官方语法 ...

  7. Node.js NPM Tutorial: Create, Publish, Extend & Manage

    A module in Node.js is a logical encapsulation of code in a single unit. It's always a good programm ...

  8. Keyboard Shortcuts Reference

    Sublime Text 3快捷键 Ctrl + Shift + P 打开命令面板 Ctrl + P 搜索项目中的文件 Ctrl + G 跳到第几行 Ctrl + W 关闭当前打开文件 Ctrl + ...

  9. 掌握了Docker Layer Caching才敢自称精通Dockerfile

    长话短说: 本次原创将向您展示在Docker中使用Layer Cache以加快镜像构建. 这个话题的初衷在于:应用程序打包过程是很慢的(下载并安装框架&第三方依赖包.生成assets),这在D ...

  10. JAVA局部变量和成员变量的区别

    成员变量与局部变量的区别 1.在类中的位置不同 成员变量:在类中方法外面 局部变量:在方法或者代码块中,或者方法的声明上(即在参数列表中) 2.在内存中的位置不同 成员变量:在堆中(方法区中的静态区) ...