第十一课预习笔记
第十一课预习内容(8.16)
9.1 正则介绍_grep上
9.2 grep中
9.3 grep下
9.4/9.5 sed
9.6/9.7 awk
扩展
把一个目录下,过滤所有*.php文档中含有eval的行
grep -r --include="*.php" 'eval' /data/
把这里面的所有练习题做一下
http://www.apelearn.com/study_v2/chapter14.html
正则
显示行数
显示行号
不区分大小写
取反
遍历所有子目录
过滤指定行及其以下n行
过滤指定行及其上面n行
过滤指定行及其上面和下面n行
过滤带0-9数字的内容
过滤出不带数字的内容
过滤以非注释内容
过滤非数字的内容
过滤非数字开头的行
[^0-9]里面代表非数字
^[0-9]代表数字开头
匹配r.o .代表任意一个字符
过滤0到N个o的内容
匹配所有字符
过滤2个o
如果不想使用脱义字符,也可以写成
过滤出现两次oo
+号前的o有一个或多个,t结尾
问好前的o,有一个或多个
过滤root或login的内容
也可以不区分大小写进行过滤
sed
sed是一个很好的文件处理工具,本身是一个管道命令,主要是以行为单位进行处理,可以将数据行进行替换、删除、新增、选取等特定工作
默认全部显示,指定行匹配两次。
也可以使用-n只显示匹配行
sed也支持. * + ,但是+要脱义,如果不想使用脱义符,需要加上-r
匹配两次o
匹配root或bus
只打印第2行
打印2到5行
打印25到最后的行
打印所有行
一条命令中,匹配两次
若两次匹配结果相同,那么显示两次
不区分大小写
在屏幕显示的时候删除指定行,不删除原文件的行
也可以直接将原文件中的行删除
在屏幕和原文件都删除user2的行
把root替换为toor,全局替换
将前10行ro+换成r , +要进行转义,所以要使用-r参数
将第一行和最后一行进行替换 .*贪婪匹配,会一直匹配到最后一个冒号。小括号要使用-r
将/root替换为123
或者使用@作为分隔符
将所有字母删掉,相当于替换为空
在所有行前加入aaa:
awk
只打印第一段
打印所有段
若不指定分隔符,默认以空格为分隔符进行打印
打印第一段、第三段和第四段
输出结果使用#分割
列出包含oo的所有行
只列出第一段包含oo的行
列出包含root的行的第一段、第三段和包含user的行的第一段、第三段、第四段
打印第三段的数字为0的所有段
打印第三段的数字为0的第一段
打印第三段大于等于1000的所有段
如果1000加上双引号,那么输出结果不一样。加上双引号会被系统认定为字符串,而不是数字
打印第七段不是sbin/nologin的内容
打印第三段小于第四段的行
打印第三段等于第四段的行
打印第三段位于5和7之间的行
打印第三段大于1000或者第七段等于/sbin/nologin的行
打印第三段大于1000 或者第七段匹配/bash/的行
打印后以#分割
显示行号
显示段号
打印前10行
打印前10行并且第一行包含root或sync
打印段数为6段并且者第一行包含root或sync
打印行数和段数为数值的内容 $NR和$NF均为变量
把第一行赋值为root
结果中是以空格间隔的,我们也可以自己指定分隔符
求和第三段的和