W6-C1-0425

六周第一次课(4月25日)
9.1 正则介绍_grep上
9.2 grep中
9.3 grep下
扩展
把一个目录下,过滤所有.php文档中含有eval的行
grep -r –include=”
.php” ‘eval’ /data/

1. grep定义

文本搜索工具, grep全称Globally search a Regular Expression and Print
egrep相当于grep -E, 使用扩展正则匹配, 否则特殊符号需要脱义

2. grep参数

-c 统计匹配行数 count
-i 忽略大小写 ignore case
-n 显示行号 line number
-v 取反 invert match
-w word, 匹配更精准
-q 仅仅过滤, 不显示结果. 脚本中可用
-o 只打印匹配的字符
-r 遍历所有目录
-An after. 显示匹配行及下面n行
-Bn before. 显示匹配行及及上面n行
-Cn context. 显示匹配行及及上下各n行

3. 正则表达式

  • 3.1 字符

    . 任意1个字符
    [] 范围内任意单个字符
    [^] 范围任意单个字符. ^[]中使用表示不接收该字符组合

扩展
[0-9] 匹配数字
[a-z] 匹配小写字母
[A-Z] 匹配大写字母
[[:space:]] 所有空白字符(空格, 制表符, 新行)
[0-9a-zA-Z] 字母及数字 [[:alnum:]]
[a-zA-Z] 字母 [[:alpha:]]
[[:punct:]] 标点符号

  • 3.2 次数

    * 任意次 (含0次)
    .* 任意个任意字符
    ? 0次或1次. (要么有要么没有)
    + 1次或多次
    {m} m次 示例: grep -E '(oo){2}' passwd ()括起来表示一个整体
    {m,n} 至少m次, 至多n次
    {0,n} 最多n次
    {m,} 最少m次

  • 3.3 定位

    ^ 行首.
    $ 结尾
    \< 单词词首
    \> 单词词尾

  • 3.4 分组与引用

    ()分组, 分组内的内容使用\1, \2等引用

4. 示例

4.1 示例1

grep -Eiv "^#|^$" file 删除空行, 空格组成的行, 以及带#号注释的行

4.2 示例2

显示/etc/passwd文件中的两位数或三位数
egrep '\<[0-9]{2,3}\>' /etc/passwd

4.3 示例3

找出/etc/passwd文件中用户名与其shell名相同的行
grep '\(^\<[a-z]*\>\).*\1$' /etc/passwd

4.4 示例4

显示系统用户root, nobody或tony的UID和默认shell
egrep '^(root|nobody|tony)' /etc/passwd |cut -d: -f3,7

4.5 示例5

找出/etc/rc.d/init.d/functions文件中某单词(单词中间可以存在下划线)后面跟着一组小括号的行
egrep '\<[a-zA-Z_]+\>\(\)' /etc/rc.d/init.d/functions

4.6 示例6

/etc/rc.d/init.d/functions取出目录路径, 取出目录名
echo /etc/rc.d/init.d/functions|grep -o '/.*/' |grep -o '\<[a-zA-Z.]\+\>/$' |grep -o '[a-zA-Z.]\+'

4.7 示例7

找出ifconfig命令执行结果中1-255之间的数字
ifconfig |egrep '\<[1-9]\>|\<[1-9][0-9]\>|\<1[0-9][0-9]\>|\<2[0-4][0-9]\>|\<25[0-5]\>'
合并相同的[]为[]{},合并后简写结果
ifconfig |egrep '\<[1-9]\>|\<[1-9][0-9]\>|\<1[0-9]{2}\>|\<2[0-4][0-9]\>|\<25[0-5]\>'
省略中间多余的\<>,合并简写结果
ifconfig |egrep '\<[1-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5]\>'

4.8 示例8

把一个目录下,过滤所有.php文档中含有eval的行
grep -r --include=".php" 'eval' /data/

未经允许不得转载:外贸SOHO笔记 » W6-C1-0425

赞 (0) 打赏

评论 0

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址

觉得文章有用就打赏一下作者~

支付宝扫一扫打赏

微信扫一扫打赏