给自己提出以下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. 仅需60秒,使用k3sup快速部署高可用K3s集群

    作者简介 Dmitriy Akulov,连续创业者,16岁时搭建了开源CDN公共服务jsDelivr的v1版本.目前是边缘托管平台appfleet创始人. 原文链接: https://ma.ttias ...

  2. 微信小程序入门知识点总结

    微信小程序入门知识点总结 前情介绍 ​ 微信小程序就不多介绍了,我们想要开发微信小程序首先得到微信公众平台 下方的小程序处注册相关账号并登录,接着填写小程序相关资料.在设置处可找到AppID用以开发微 ...

  3. 写一个LRU算法的记录

    今天简单记录一下,利用Scala解答的一道LRU题目,原题为LeetCode的第146题,是一道设计LRU的题目. 题目详情 运用你所掌握的数据结构,设计和实现一个  LRU (最近最少使用) 缓存机 ...

  4. winform 数据(双向)绑定 快速更新实体

    写点东西感觉特别累,也已经很久没写了. 最近在做一个winform类型的系统,其涉及到大量的表,有些表又包含大量的字段,所以当添加.更新实体时便会十分的繁琐,一方面:需要把界面上的字段绑定到对应的实体 ...

  5. 9.快照持久化和AOF持久化

    持久化功能redis为了内部数据的安全考虑,会把本身的数据以文件形式保存到硬盘中一份,在服务器重启之后会把硬盘中的数据恢复到内存(redis)的里边. 数据保存到硬盘的过程就称为“持久化”效果. re ...

  6. 线程池 & 线程调度

    线程池1. 第四种获取线程的方法:线程池,一个 ExecutorService,它使用可能的几个池线程之 一执行每个提交的任务, 通常使用 Executors 工厂方法配置. 2. 线程池可以解决两个 ...

  7. nginx学习资料整理一

    一.安装运行 1.1.安装环境支撑 1.gcc 环境,一般情况linux 系统自带该环境,也可自行下载安装使用新版本: 2.pcre 环境,一般需自行安装,其是一个perl库,包含正则表达式等功能,h ...

  8. 关于替换“c2a0”十六进制字符的方法

    一.背景:在爬取网络小说生成的文件中,发现有些空格没法替换,使用十六进制编辑器查看,发现这些空格字符的十六进制值是“c2a0”,其来源是网页控制的特殊字符,这是一个叫做Non-breaking spa ...

  9. Take advantage of Checkra1n to Jailbreak iDevice for App analysis

    An unpatchable bootrom exploit called "checkm8" works on all iDevices up until the iPhone ...

  10. 50个SQL语句(MySQL版) 问题二十

    --------------------------表结构-------------------------- student(StuId,StuName,StuAge,StuSex) 学生表 tea ...