第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. 明解C语言 入门篇 第四章答案

    练习4-1 #include <stdio.h> int main(void) { int no; int x; do{ printf("请输入一个整数:"); sca ...

  2. IDEA上tomcat的配置

    IDEA上tomcat的配置   IDEA上集成自己的tomcat,主要就是下面这张表的配置,不累述.

  3. 有关logistic(sigmoid)函数回归

    在神经网络中,经常用到sigmoid函数,y = 1 / (1+e-x) 作为下一级神经元的激活函数,x也就是WX(下文,W以θ符号代替)矩阵计算结果. 这个函数通常用在进行分类,通常分为1或0的逻辑 ...

  4. NOIP模拟 4

    T1没开longlong T2忘了有向... T3是个好题,可以说将复杂度从N^2优化到NlogN是一个质的飞跃 考虑分治(要想出log可不就要分治么!(segtree也行 但我不会) 对于一个分治区 ...

  5. 如何修改git上传代码的作者姓名

    随着IT行业的不断壮大,开源的东西越来越多,使用git来进行代码管理的人自然也越来越多,而且很多人的git账户都不是自己的本人名字,但是在公司工作的时候为了遇到问题能够定位责任人和便于区分提交人,通常 ...

  6. C语言变量名和地址的关系【转载】//基础的东西

    原文链接:http://blog.csdn.net/ssff1/archive/2009/12/13/4998787.aspx 变量名不占空间 变量:用来标识(identify)一块内存区域,这块区域 ...

  7. PowerMock学习(一)之PoweMock的入门--模拟新增学生操作

    关于powermock 在TDD领域Mock框架有很多,比如EasyMock,JMock,Mockito.可能有些同学会好奇了,为什么要重点把powermock拿出来呢,因为powermock可以解决 ...

  8. C# 操作本地用户和组(基本全功能)

    今天学习了下怎么用.Net操作本地用户和组,因为目前网上还没看到一篇比较完整的文章,所以整理了下也分享出来,最后附带参考文档,方便深究的童鞋继续学习.==========  原创作品    作者:Yo ...

  9. [ISE调试] 在ISE调试过程中,遇到过的error以及消除办法

    1.Incompatible IOB's are locked to the same bank 15,具体如右图, 于是去查引脚配置,发现 也就是说,在bank=15的这组IO里面,我既选了LVAM ...

  10. diff算法

    diff算法的作用计算出Virtual DOM中真正变化的部分,并只针对该部分进行原生DOM操作,而非重新渲染整个页面. 传统diff算法 通过循环递归对节点进行依次对比,算法复杂度达到 O(n^3) ...