天天看点

第二十五课 grep\egrep工具的使用一、什么是正则二、grep、egrep工具总结:

一、什么是正则

正则就是一串有规律的字符串。掌握好正则对于编写shell有很大帮助!!!

二、grep、egrep工具

1、命令格式:grep -cinvrABC 'word' filename

c 行数

i 不区分大小写

-c 打印符合要求的行数 grep -c 'nologin' /etc/passwd (显示过滤字符的行数)

(为什么过滤的选项什么标红? which grep)

-i 忽略大小写 grep -i 'nologin' passwd (不分大小写,标红显示我们过滤的字符)

第二十五课 grep\egrep工具的使用一、什么是正则二、grep、egrep工具总结:

-n 输出符合要求的行及行号 grep -ni 'nologin' passwd

-v 打印不符合要求的行 grep -v 'nologin' passwd (列了没有这个字符的行)

-r 遍历所有的子目录 grep -r 'root' /etc/ (列出ect目录所有文件包括root字符的行)

-A 后面跟一个数字,打印出符合要求的行及在行下面列出不符合要求的两行

grep -nA2 'nologin' passwd

-B 后面跟一个数字,打印出符合要求的行及在行上面列出不符合要求的两行

grep -B2 'nologin' passwd

-C 后面跟一个数字,打印出符合要求的行及在行上下面各列出不出不符合要求的两行

grep -C4 'nologin' passwd

2、grep的具体用法

正则表达式:

grep '[0-9]' passwd 过滤所有包括数字的行;

grep -v '[0-9]' /etc/inittab 过滤所有不包含数字的行;

grep -n '^#' /etc/inittab 过滤有#号开头的行;

grep -nv '^#' /etc/inittab 过滤出没有#的行;

grep '[^0-9]' /etc/inittab 非数字就符合要求,^就是非;

grep '^[^0-9]' /etc/inittab 非数字开头的行。第一个^就是开头的意思,在括号里就取反,非的意思。

grep 'r.o' passwd “.”表示任意的一个字符。也就是说r.o可以=rao \r2o \rAo

grep 'o星号o' passwd 星号表示0个或多个*前面那个字符,在这一行里表示n个o

grep '.星号' passwd .星号表示任意个任意字符

grep 'o{2}' passwd 表示匹配2次o,{ }表示一个范围。如果觉得脱义符号不好写,也可以写成:egrep 'o{2}' passwd 也可以写成: grep -E 'o{2}' passwd,

grep '(oo){2}' passwd 表示匹配2次oo

grep 'o+o' passwd + 表示1次或多次的+前面的那个字符。可以写成:egrep 'o+o' passwd

grep 'o\?o' passwd ?表示 ? 号前面字符的重复0次或1次.可以写成: egrep 'o?o' passwd

grep -E 'root|nologin' passwd | 表示或者,同时过滤出有root或者nologin的行

*把一个目录下,过滤所有 .php文档中含有eval的行*

grep -r --include=".php" 'eval' /data/

总结: