第6周第3次课(4月25日)

课程内容:

9.1 正则介绍_grep上
9.2 grep中
9.3 grep下
扩展
把一个目录下,过滤所有*.php文档中含有eval的行
grep -r --include="*.php" 'eval' /data/

9.1 正则介绍_grep上

-c    行数的数量,指过滤出来一共有多少行

-i     不区分大小写

-n    显示行号

-v    取反的意思

-r    把一些子目录所有遍历一遍

-A   后面跟数字,表示过滤出符合条件及数字后的行。

-B   把符合关键词条件及上面2行一起列出来

-C   把符合关键词条件的向上和向下2行一起列出来

操作实例如下:

[root@jimmylinux-002 ~]# mkdir grep
[root@jimmylinux-002 ~]# cd grep
[root@jimmylinux-002 grep]# cp /etc/passwd .
[root@jimmylinux-002 grep]# ls
passwd
[root@jimmylinux-002 grep]# pwd
/root/grep
[root@jimmylinux-002 grep]# grep 'nologin' passwd

-i    不区分大小写

保存退出后再加上-i参数查看第二行就会被过滤出来

如果不加i的参数,第二行不会被显示出来,直接从第三行开始显示。

[root@jimmylinux-002 grep]# grep -vni 'nologin' passwd  如果加上v参数会被除了nologin的显示出来

[root@jimmylinux-002 grep]# grep -r 'root' /etc/  颜色也显示成紫色了,当然这样内容太多不方便查看。

可以重定向到grep.log里面再查看

[root@jimmylinux-002 grep]# grep -nA2 'root' passwd

把第1行带有关键词“root”的内容列出来,然后再把符合条件下面跟着的2行一起打印出来。

[root@jimmylinux-002 grep]# grep -nB2 'root' passwd

把符合关键词条件及上面2行一起列出来,因为第1行上面已经没有内容了,所以只把第1行显示出来及第10行和上面2行。

[root@jimmylinux-002 grep]# grep -nC2 'root' passwd

把符合关键词条件的向上和向下2行一起列出来

9.2 grep中

[root@jimmylinux-002 grep]# grep '[0-9]' passwd

表示方括号中任意一个字符,只要有一个数字就符合要求,会把带数字的全部过滤出来。

[root@jimmylinux-002 grep]# grep -v '[0-9]' passwd

加上-v表示把所有不包含数字的过滤掉

[root@jimmylinux-002 grep]# grep -vn '[0-9]' /etc/inittab

第9、第10行包含数字,所有没有显示。

vim /etc/inittab  查看第9、第10行带有数字

(切记不要直接修改etc下面的inittab文件,否则很有可能导致系统启动不了,如果需要修改,可以先cp一份到当前目录再修改)

[root@jimmylinux-002 grep]# grep -n '^#' /etc/inittab

'^#' 表示以#开头的行,因为都带#号,所有会全部显示出来。

[root@jimmylinux-002 grep]# grep -nv '^#' inittab

-v  把不以#开头的行打印出来

[root@jimmylinux-002 grep]# grep -v '^#' inittab

把以#开头的行去除掉

[root@jimmylinux-002 grep]# grep '[^0-9]' inittab

'[^0-9]'  表示非0-9只要不是数字,任何一个字符都符合要求

[root@jimmylinux-002 grep]# grep '^[^0-9]' inittab

把非数字的行列出来

'^#'         ^在外面表示以#开头

'[^0-9]'    ^在中括号里面表示取中括号内容里面的反义

9.3 grep下

[root@jimmylinux-002 grep]# grep 'r.o' passwd

'r.o'     中间的.表示任意一个字符

[root@jimmylinux-002 grep]# grep 'o*o' passwd

'o*o'   *表示左边的字符重复N次,同时和后面的一起,*一定和前面的字母相关的。

[root@jimmylinux-002 grep]# grep '.*' passwd

'.*'     .*表示匹配任意一个任意字符,0个也一样可以。

[root@jimmylinux-002 grep]# grep 'o\{2\}' passwd

'o\{2\}'  表示匹配花括号里面符合范围的o

[root@jimmylinux-002 grep]# egrep 'o{2}' passwd

如果感觉上面脱义方法太麻烦,当然也可以使用egrep的方式。

[root@jimmylinux-002 grep]# grep -E 'o{2}' passwd       这个命令和egrep方式一样

[root@jimmylinux-002 grep]# grep -E '(oo){2}' passwd  列出重复出现2次o的内容

[root@jimmylinux-002 grep]# egrep 'o+o' passwd         "+"表示+号前面的一次或多次

[root@jimmylinux-002 ~]# egrep 'o?t' passwd               "?"表示?前面字符重复次数0或1,如果没有就显示?后面的内容。

[root@jimmylinux-002 grep]# grep -E 'root|nologin' passwd    |竖线表示或者,例如列出root或者nologin的内容。

正则grep 使用介绍的更多相关文章

  1. awk 正则表达式、正则运算符详细介绍

    前言:使用awk作为文本处理工具,正则表达式是少不了的. 要掌握这个工具的正则表达式使用.其实,我们不必单独去学习它的正则表达式.正则表达式就像一门程序语言,有自己语法规则已经表示意思. 对于不同工具 ...

  2. Jquery 遍历数组之grep()方法介绍

    grep()方法用于数组元素过滤筛选. grep(array,callback,boolean);方法参数介绍. array   ---待处理数组 callback  ---这个回调函数用来处理数组中 ...

  3. 正则grep

    什么是正则: 正则就是一串有规律的字符串. 正则三剑客: grep/egrep (egrep是grep的扩展),sed, awk grep grep过滤指定关键词 [root@localhost gr ...

  4. perl中的grep函数介绍

    grep函数 (如果你是个的新手,你可以先跳过下面的两段,直接到 Grep vs.loops 样例这一部分,放心,在后面你还会遇到它) <pre>grep BLOCK LISTgrep E ...

  5. linux命令之grep用法介绍

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

  6. 正则和grep——再做正则就去死

    grep 文本过滤工具 基本正则表达式 grep 语法 基本正则表达式的元字符 次数匹配 位置锚定 分组 扩展正则表达式 基本正则表达式的元字符 次数匹配 位置锚定 分组 或者 grep的介绍 lin ...

  7. shell脚本-正则、grep、sed、awk

    ----------------------------------------正则---------------------------------------- 基础正则 ^word ##搜索以w ...

  8. 通过grep来进行日志分析,grep -C和配合awk实际对catalina.out使用案例

    本文介绍通过grep来进行日志分析,主要介绍grep -C和配合awk实际对catalina.out使用案例 grep可以对日志文件进行筛选,统计,查询,快速定位bug. 首先,你的日志需要比较规范, ...

  9. linux三剑客之一grep

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

随机推荐

  1. vue学习之深入响应式原理

    vue的响应式原理 当你把一个普通的 JavaScript 对象传入 Vue 实例作为 data 选项,Vue 将遍历此对象所有的属性,并使用 Object.defineProperty 把这些属性全 ...

  2. CSPS_105

    不想多说... T1 是$1$还是$26^n-1$ T2 是$f[getf(u)]=getf(v)$还是$f[u]=v$ T3 是$if(condition1\&\&condition ...

  3. centos下docker离线部署

    安装准备 Docker可以让开发者打包他们的应用以及依赖包到一个轻量级.可移植的容器中,然后发布到任何流行的Linux机器上,也可以实现虚拟化. 环境要求 Centos 安装包下载地址 安装包下载以下 ...

  4. 来探讨一下最近面试问的ThreadLocal问题

    中高级阶段开发者出去面试,应该躲不开ThreadLocal相关问题,本文就常见问题做出一些解答,欢迎留言探讨. ThreadLocal为java并发提供了一个新的思路, 它用来存储Thread的局部变 ...

  5. .netcore之DI批量注入(支持泛型) - xms

    一旦系统内模块比较多,按DI标准方法去逐个硬敲AddScoped/AddSingleton/AddTransient缺乏灵活性且效率低下,所以批量注入提供了很大的便捷性,特别是对于泛型的服务类,下面介 ...

  6. Linux跨网段通信小实验

    一.实验场景. 实验准备,Linux主机4台.分别是主机A,路由主机R1,路由主机R2,主机 C,主机A的ip是192.168.56.66/24,且只有一块网卡eth0:路由主机R1有两块网卡eth0 ...

  7. 设计模式(Java语言)- 简单工厂模式

    简单工厂模式有称为静态工厂模式,属于设计模式中的创建型模式.简单工厂模式通过对外提供一个静态方法来统一为类创建实例.简单工厂模式的目的是实现类与类之间解耦,其次是客户端不需要知道这个对象是如何被穿创建 ...

  8. JS三座大山再学习(一、原型和原型链)

    原文地址 ## 前言 西瓜君之前学习了JS的基础知识与三座大山,但之后工作中没怎么用,印象不太深刻,这次打算再重学一下,打牢基础.冲鸭~~ 原型模式 JS实现继承的方式是通过原型和原型链实现的,JS中 ...

  9. C语言|博客作业06

    这个作业属于哪个课程 C语言程序设计II 这个作业的要求在哪里 https://edu.cnblogs.com/campus/zswxy/CST2019-1/homework/9885 我在这个课程的 ...

  10. Nginx下HTTP强制重定向至HTTPS

    Nginx下HTTP强制重定向至HTTPS 对于nginx来说,配置http强制重定向至https有多种多样的写法.可以直接rewrite,也可以用301重定向.但是直接拷贝网上的配置往往会出现问题, ...