- 正则介绍_grep(上)(中)(下)
- sed(上)(下)
- awk(上)(下)
- 扩展,命令格式:把一个目录下,过滤所有*.php文档中含有eval的行,
一.正则介绍_grep(上)(中)(下)
- 什么是正则
- grep工具介绍(上)
- 使用案例
- #grep过滤会默认把过滤出来的内容标红
- -c 可以查看筛选内容行数
- -n 显示查看内容的行号,在第几行
- -i 不区分大小写
- -v 取反,把除了搜索的关键词内容显示出来
- -r 用来搜索父级目录及以下所有文件带有关键词内容
- 不加-r 无法对目录进行操作
- -A 后面跟数字,过滤出符合要求的行以及下面n行
- -B 过滤出符合要求的行及上面n行
- -C 过滤出符合要求的行及上下各n行
- grep工具介绍(中)
- 示例:
- #grep '[0-9]' passwd 过滤出该范围的内容
- #grep -vn '[0-9]' /etc/inittab 将除了带有该范围的内容剩下的过滤出来
- #grep -nv '^#' inittab 将不以#开头的内容过滤出来
- #grep '[^0-9]' inittab 将不带有非[0-9]的内容全部过滤出来
- #grep 'r.o' passwd ,把带有r 或者o的内容过滤出来, . 表示或者
- #grep 'o*o' passwd ,*代表任意个
- #grep '.*' 表示,任意个任意字符
- #grep 'o\{2\}' passwd 表示,把出现2次o的内容过滤出来
- #egrep 'o{2}' passwd 表示,把出现2次o的内容过滤出来
- #egrep 'o+o' passwd 表示,把o加1次以上o的内容过滤出来
- #egrep 'o?t' passwd 表示,把?前面o出现[0-1]次的内容过滤出来
- #egrep 'root|nologin' passwd 表示,把带有root或者nologin的内容过出来, | 表示或者
- #egrep '(oo){2}' passwd 表示,把出现两次oo的内容过滤出来
二.sed(上)(下)
1.sed 匹配功能
- #sed -n ‘/root/’ p test.txt 将带有root的内容打印出来
- 同时支持 . *
- 还有 + 不过需要脱译,或者在前面选项加r。
- 支持{ }
- 支持 |
2.sed 打印行的内容
- 打印指定行内容
- 打印指定范围内容
- 打印全部内容
- 匹配内容不区分大小写,加I
3.sed -e 同时多个表达式操作执行
4.sed 删除指定的行
- 删除指定行数,不会删除文件内容,只是打印出来
- 加 -i 选项,会把文件内容删除
- 把指定内容相关的行删除
5.sed 替换功能
- 替换指定范围的指定内容替换
- 查找替换可以使用正则表达式的,可以识别 . * + | 等
- 支持 | ,示例如下:
- 将指定内容删除,替换成空即可
- 在所有行前面加指定字符串
三.awk(上)(下)
1.awk 分段操作功能
- 指定分隔符,并把第一段打印出来,不会改动文件内容
- 将所有内容打印出来
- awk 没有指定分隔符号,则会默认用空格或者空白字符为分隔符来打印
- 打印多段内容
- 更改替换指定分割符号
2.awk 匹配功能
- 将带有指定字符的行匹配出来
- 将第一段带有指定字符的行匹配出来
- 默认支持特殊字符,支持正则表达式
- 支持多个表达式
3.awk 针对数学表达式的操作
- 数学表达式== ,>= ,
- 数学表达式 != 不等于
- 数学表达式< ,=
- 大于并小于指定数字
- || 满足一个条件或者另外一个条件内容
- OFS 内置变量,更改指定分隔符,
- NR 内置变量,表示行,打印出来
- NF 内置变量,表示段,打印出来
- 内置变量与数学表达式组合命令格式,示例:
- <= ,&&
- = 这个是赋值,== 才是等于,匹配
- tot 求和
- if 判断
五. 扩展
- 把一个目录下,过滤所有*.php文档中含有eval的行
grep -r --include="*.php" 'eval' /data/