作用

在文件或标准输入中,通过正则表达式查找对应的内容

语法格式

grep [选项]... PATTERN [FILE]...

grep的常用选项参数

参数选项 描述
-G 默认值
-F 相当于使用fgrep,但必须用 -F
-E 相当于使用egrep,但必须用 -E
-V 打印 grep 的版本号

-E 的栗子

前提

当 grep 想同时过滤多个条件或操作

错误写法

默认不支持多条件匹配

ps -ef | grep "java|tomcat"

正确写法

ps -ef | grep -E "java|tomcat"

匹配控制选项参数

参数选项 描述
-e PATTERN 来进行匹配操作
-f 从文件中取得 PATTERN
-i 忽略大小写
-v 反转匹配,选择没有被匹配到的内容
-w 匹配整词,精确地单词,单词的两边必须是非字符符号(即不能是字母数字或下划线)
-x 仅选择与整行完全匹配的匹配项
--line-buffered 有一个文件是动态的,它不断地添加信息到文件的尾部,而你想要输出包含某些信息的行。即持续的grep一个动态的流

-e 的栗子

当你有多个正则表达式想同时匹配时,可以用 -e,一个 -e 接一个正则表达式,它们是或的关系,不是与的关系

-f 的栗子

-i 的栗子

-v 的栗子

-w 的栗子

-x 的栗子

一般输出控制选

参数选项 描述
-s 禁止显示错误信息
-q 安静模式,不会有任何输出内容,查找到匹配内容会返回0,未查找到匹配内容就返回非0
-m num 匹配 num 次后停止
-c 匹配成功数量
-l 列出匹配成功结果的文件来源(标准输入或文件名称)
-H 给每一个匹配结果打印来源(标准输入、文件名)

-q

目前没发现有什么用

-m 的栗子

-c 的栗子

-l 的栗子

ls 输出的内容就是标准输入

输出控制参数讲解

参数选项 描述
-b 输出的同时打印字节偏移
-n 输出的同时打印行号
-H 给每一个匹配结果打印来源(标准输入、文件名)
-h 输出是不显示来源(默认)
-o 只显示匹配 PATTERN 的部分

-b 的栗子

-n 的栗子

-H 的栗子

因为结果都来源于 ls 的标准输入,所以显示标准输入,如果是来源于某个文件则会显示文件名

-o 的栗子

上下文线控制选项

参数选项 描述
-A num 匹配到搜索到的行以及该行下面的num行
-B num 匹配到搜索到的行以及该行上面的num行
-C num 匹配到搜索到的行以及上下各num行

备注

感觉就是为了好看而已

-A 的栗子

-B 的栗子

-C 的栗子

文件和目录选项

参数选项 描述
-a 不忽略二进制的数据
-d 当要查找的是目录而非文件时,必须使用这项参数
-r 以递归方式读取每个目录下的所有文件; 这相当于-d recurse选项。

-r 的栗子

巨常用的语法

重点

写的正则表达式最好用 '' 包起来,当碰到需要转义符的时候才会生效

查找指定进程

ps -ef | grep java

查找指定进程并统计数量

ps -ef | grep -c java

从文件中查找关键字

grep src test.txt

从文件中查找关键字并输出它的行号

grep -n src test.txt

从多个文件中查找关键字

grep src src.txt src1.txt src2.txt

从文件中查找关键字后,再从结果中找到指定关键字

cat src.txt | grep -v s | grep -w lib

找出文件中的空白行

grep -n ^$ test.txt

显示当前目录下面以 .txt 结尾的文件中的所有包含每个字符串至少有4个连续小写字符的字符串的行

grep -n '[a-z]\{4\}' *.txt

待补充

Linux 三剑客(1)- 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. Java代码中,如何监控Mysql的binlog?

    最近在工作中,遇到了这样一个业务场景,我们需要关注一个业务系统数据库中某几张表的数据,当数据发生新增或修改时,将它同步到另一个业务系统数据库中的表中. 一提到数据库的同步,估计大家第一时间想到的就是基 ...

  2. Spring Boot实现数据访问计数器

    1.数据访问计数器   在Spring Boot项目中,有时需要数据访问计数器.大致有下列三种情形: 1)纯计数:如登录的密码错误计数,超过门限N次,则表示计数器满,此时可进行下一步处理,如锁定该账户 ...

  3. Flutter开发进阶学习指南Flutter开发进阶学习指南

    Flutter 的起源 Flutter 的诞生其实比较有意思,Flutter 诞生于 Chrome 团队的一场内部实验, 谷歌的前端团队在把前端一些"乱七八糟"的规范去掉后,发现在 ...

  4. 谈谈网络协议 - 数据链路层( Data Link)

    数据链路层( Data Link) 链路:从1个节点到相邻节点的一段物理线路(有线或无线),中间没有其他交换节点 案例 上图可以看出,总共由5条链路组成: 第1条:计算机0 => 路由器0,使用 ...

  5. 数据增广imgaug库的使用

    记录一下这两天用imgaug库做数据增广的代码,由于是算用算学的,所以只能把代码写出来,具体每种增广算法的原理和一些参数就不得而知了,不过我觉得也没必要把这么些个算法搜搞懂,毕竟重点是扩种数据.所以, ...

  6. WPF MVVM模式下路由事件

    一,路由事件下三种路由策略: 1 冒泡:由事件源向上传递一直到根元素.2直接:只有事件源才有机会响应事件.3隧道:从元素树的根部调用事件处理程序并依次向下深入直到事件源.一般情况下,WPF提供的输入事 ...

  7. 常见web中间件漏洞(五)weblogic漏洞

    继续整理有关中间件漏洞思路(仅做简单思路整理,不是复现,复现请参考大佬们的长篇好文,会在文章中列举部分操作) WebLogic是Oracle公司出品的一个application server,确切的说 ...

  8. 并发编程 Process 互斥锁

    进程理论 程序与进程的区别 ''' 程序不是存在硬盘上的代码,相对来说是静态的 进程表示程序在执行的过程,是动态的 ''' 进程的调度 先来先服务调度算法 '''对长作业有利,对短作业无益''' 短作 ...

  9. SpringBoot快速入门(一)

    本文内容 SpringBoot概述 SpringBoot快速入门 SpringBoot起步依赖原理分析 SpringBoot配置 SpringBoot整合其他框架 1.SpringBoot概述 1.1 ...

  10. Linux第一个动态库

    动态库一般以.so结尾,就是shared object的意思. 其基本生成步骤为   ⑴编写函数代码   ⑵编译生成动态库文件,要加上 -shared 和 -fpic 选项 ,     库文件名以li ...