六周第一次课(4月25日)笔记
9.2 grep中
9.3 grep下
正则是一串有规律的字符串
grep
创建一个grep文件夹,并把/etc/passwd内容拷贝到该文件夹下,grep 'nologin' passwd发现关键字会自带颜色,使用绝对路径或者在CentOS6中不带颜色,如下图所示:
-c显示总行数, -n 显示每一行的数字, -ni区分大小写,-vni和前面数字互补
-r遍历所有子目录,
下图只是一部分,-r有对/etc/下所有子目录进行遍历搜索的功能
对比之:grep 'root' /etc/ 提示/etc/为目录,只能对某文件grep搜索,通过grep -r 'root' /etc/ > /tmp/grep.log重定向后,再使用grep passwd /tmp/grep.log找到对/etc/passwd的遍历
-An 把关键字行和其下面n行都列出来
-Bn把关键字行和其上面n行列出来
-Cn把关键字行和其上下n行都列出来
如下图所示
grep相关正则 (从第三行开始)
grep '[0-9]' passwd
-v 取反
vi /etc/ initab 输入:set nu,发现第九行第十行有数字,故而被过滤
把/etc/inittab系统文件拷贝到当前文件夹,并做任意修改,使用命令 grep -n '^#' /etc/inittab 和grep -n '^#" ./inittab 作对比,发现改动行处
实际用法:在查看服务配置文件时,由于#都是解释性语句,可以用grep -vn '^#' /filname取反过滤掉#的行直接查看清晰明朗的服务器配置文件
^放在[]里面”取非“,放在[]外面表示”以xxx开头“
如下图例子所示:
grep 'r.o' 其中的.表示任意字符
grep 'o*o' 其中*表示前面字符的任意重复次数n
grep ' .*' 其中. *表示任意字符的任意重复
匹配某用户:grep ' username.*bash' passwd
{} 在正则中表示范围,o{2}表示o出现的次数为2次,但是必须加上脱义符才可以用grep命令搜索到;如果不想加脱义符,则要用grep -E或者egrep,如果想查多个字符,如oo需要用(oo)作为一个整体
"+"的用法和"*"类似,区别在于①需要脱义 ②前面的字符范围时1-N,后面的为0-N
"o?t" 中的?表示前面字符(本例中为g)出现0次或者1次的情况
|表示或者,用i不区分大小写,需要用grep -E或者egrep免去脱义符