任务列表
9.1 正则介绍_grep上
9.2 grep中
9.3 grep下
扩展
把一个目录下,过滤所有*.php文档中含有eval的行
grep -r --include="*.php" ‘eval’ /data/
正则
正则就是一串有规律的字符串
掌握好正则对于编写shell脚本有很大的帮助
各种编程语言中都有正则,原理都是一样
本章要学习grep/egrep、sed、awk
grep命令
grep过滤指定关键词
grep [-cinvABC] ‘word’ filename
-c 打印符合要求的行数
-i 不区分大小写
-n 显示行号
-v 取反
-r 遍历所有子目录
-A 后面跟数字,过滤出符合要求的行以及下面n行
-B 同上,过滤出符合要求的行以及上面n行
-C 同上,过滤出符合要求的行以及上下各n行
grep ‘[0-9]’ passwd
grep -v ‘[0-9]’ passwd
grep ‘^
[0-9]’ passwd 列出非数字开头的行
‘^’ ^在引号中表示已什么开头
[^] ^在方括号中表示取反
grep^
‘[^
a-zA-Z]’ passwd
grep ‘r.o’ passwd 其中的点,表示任意一个字符
grep'o*o'
passwd 表示*
号左边的字符出现0次或多次
‘.*
’ 表示任意个任意字符
扩展正则:当表达式中有+,?,|,(),{ }等时,grep是不能直接使用需要机上 \ 脱义,或者加上-E,或者使用egrep,写法如下:
过滤出出现两次o这个字符的行
grep ‘o{2}’ passwd
grep -E ‘o{2}’ passwd
egrep ‘o{2}’ passwd
grep -E ‘(oo){1}’ passwd 表示oo这个字符出现一次
grep'o*o'
passwd 表示*
号左边的字符出现0次或多次
egrep ‘o+o’ passwd 表示 + 号左边的字符出现一次或者多次
egrep ‘o?o’ passwd 表示 ?号左边字符出现的零次或者一次
egrep ‘root|tx’ passwd 表示包含 | 两边的任意一个字符的行
课堂笔记
date 打印当前日期
$() 取小括号中命令的结果,变成指令输出
history 1 取命令历史中最后一条
read详解
http://blog.lishiming.net/?p=484
扩展正则:+ ? () {} |
grep -E 或者egrep
正则表达式核心关键词
. 任意一个字符
.* 代表任何个字符或者没有字符
* 不能单独存在,前面必须有一个字符,*号前面的字符有零个或者多个,用(aaa)*括起来表示零个或者多个aaa
+ 不能单独存在,+号前面的字符有一个或者多个,
? ?号前面的字符有零个或者一个,
() 看成为一个整体(aaa)
{} 表示范围,{1,3}表示1-3。
| 表示或者
[] 表示其中一个字符,[1-3]等同于[1,2,3]表示1或者2或者3当中一个,[a-zA-Z]
^ 以什么开头,^[^a-z] 表示取反,不要以a-z字母开头的
$ 以什么结果,b$ 表示以b结尾的
\ 脱义