六周第一次课(1月15日)
9.1 正则介绍_grep上

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

2.格式
grep [options]

3.主要参数
[options]主要参数:
-c:只输出匹配行的计数。
-I:不区分大 小写(只适用于单字符)。
-h:查询多文件时不显示文件名。
-l:查询多文件时只输出包含匹配字符的文件名。
-n:显示匹配行及 行号。
-s:不显示不存在或无匹配文本的错误信息。
-v:显示不包含匹配文本的所有行。
pattern正则表达式主要参数:
\: 忽略正则表达式中特殊字符的原有含义。
^:匹配正则表达式的开始行。
$: 匹配正则表达式的结束行。
\<:从匹配正则表达 式的行开始。
\>:到匹配正则表达式的行结束。
[ ]:单个字符,如[A]即A符合要求 。
[ - ]:范围,如[A-Z],即A、B、C一直到Z都符合要求 。
。:所有的单个字符。
* :有字符,长度可以为0。

六周第一次课(1月15日)_linux

六周第一次课(1月15日)_linux_02

六周第一次课(1月15日)_六周_03

演示

创建目录,copy文件

六周第一次课(1月15日)_六周_04

grep "" *

六周第一次课(1月15日)_六周_05

grep -c 行数

六周第一次课(1月15日)_linux_06

grep -n 行号

六周第一次课(1月15日)_linux_07

grep -i 不区分大小写

六周第一次课(1月15日)_linux_08

grep -v 取反,指不带某字符的行数

六周第一次课(1月15日)_六周_09

grep -r 子目录或者孙目录所有下面的文件全部遍历一遍

六周第一次课(1月15日)_linux_10

六周第一次课(1月15日)_linux_11

六周第一次课(1月15日)_linux_12

六周第一次课(1月15日)_linux_13

grep -A2  除了把包含关键词的这行列出来,还会把这一行下面2行列出来

六周第一次课(1月15日)_六周_14

grep -B2  以上2行

六周第一次课(1月15日)_六周_15

grep -C 上下2行

六周第一次课(1月15日)_六周_16



9.2 grep中

六周第一次课(1月15日)_linux_17


grep "[0-9]" 包含0-9

六周第一次课(1月15日)_六周_18

grep -v "[0-9]"  不包含0-9

六周第一次课(1月15日)_linux_19


grep -n "^#" 以#开头的行

六周第一次课(1月15日)_六周_20

grep -nv "^#"  不以#开头的行

六周第一次课(1月15日)_六周_21

grep "[^0-9]"  非0-9,其他字符标识,^放在括号里头取非,放外头取开头

六周第一次课(1月15日)_linux_22

grep "^[^0-9]" 查询列出以非0-9开头的行数

六周第一次课(1月15日)_linux_23


9.3 grep下

grep "r.o"    .代表任意的一个字符

六周第一次课(1月15日)_六周_24

grep "o*o"   *表示左边的字符重复0-n次,结尾是o

六周第一次课(1月15日)_linux_25

grep ".*" 任意字符

六周第一次课(1月15日)_六周_26

grep  "aming.*bash"

六周第一次课(1月15日)_六周_27

grep "o\{2\}" 表示o出现2次  \脱义

六周第一次课(1月15日)_linux_28

grep "o{0,3\}"  o出现0-3次

六周第一次课(1月15日)_linux_29

egrep =grep -E  扩展的grep能识别,不用脱义

六周第一次课(1月15日)_六周_30

六周第一次课(1月15日)_六周_31

oo括起来表示1个整体

六周第一次课(1月15日)_六周_32


egrep "o+o"  +表示前面字符的1次或多次,*是0次或多次,后面是o

六周第一次课(1月15日)_linux_33

六周第一次课(1月15日)_linux_34


grep "o?l"  ?表示前面的字符重复0或1次

六周第一次课(1月15日)_六周_35

六周第一次课(1月15日)_linux_36

egrep "root|nologin"   |或者

六周第一次课(1月15日)_六周_37

六周第一次课(1月15日)_六周_38







扩展
把一个目录下,过滤所有*.php文档中含有eval的行
grep -r --include="*.php" 'eval' /data/