Grep家族和正则表达式详解
1.grep家族的概念 grep : 支持使用基本扩展表达式 egrep:支持使用扩展正则表达式 fgrep:不支持使用正则表达式 作用:强大的文本搜索工具,根据用户指定的“pattern(过滤条件)”对目标文本逐行进行匹配检查,打印出符合条件的行 pattern:由正则表达式的元字符及文本字符所编写出的过滤条件 2.grep命令详解 用法:grep [OPTIONS] PATTERN [FILE]... 常用选项: --color=auto:对匹配到的文本着色后高亮显示 -i:不区分字符大小写 -o:仅显示匹配到的文本自身 -v,--invert-match:反向匹配 -E:支持扩展的正则表达式 -q,--quiet,--silient:静默模式,不输出任何信息 -F:支持使用固定字符串,不支持正则表达式,相当于fgrep -G,--basic-regexp:支持使用基本正则表达式 -p,--perl-regexp:支持使用pcre正则表达式 -ePATTERN,--regexp=PATTERN:多模式机制 -fFILE,--file=FILE:FILE为每行包含一个pattern的文本文件,及grepscript -ANUM,--after-context=NUM:显示匹配到的后面几行 -BNUM,--before-context=NUM:显示匹配到的前面几行 -CNUM,-NUM,--context=NUM:显示匹配到的前后各几行 使用示例: 由于grep和egrep会用到正则表达式,所以在后面会结合正则表达式再一起演示。 3.正则表达式作用及元字符 正则表达式由一类特殊字符及文本字符所编写的模式,其中有些字符不表示其字面意义,而是用于表示控制或通配的功能。 正则表达式引擎:利用正则表达式模式分析给定文本的程序。 而正则表达式又分为两类: (1)基本正则表达式 (2)扩展正则表达式 注意,找出上下两张图片哪里不同? 基本正则表达式元字符和扩展正则表达式元字符是有所不同的! 4.grep命令结合正则表达式的应用 (1)字符匹配 找出/etc/passwd文件中带有nologin的行 grep"[nologin]"/etc/passwd (2)次数匹配 找出 /etc/passwd文件中的三位或四位数 grep-o"&;[0-9]{3,4}&;"/etc/passwd egrep-o"&;[0-9]{3,4}&;"/etc/passwd (3)位置锚定 显示/etc/passwd文件中不以bash结尾的行 grep-v"bash$"/etc/passwd (4)分组应用 在/etc/passwd找出其用户名与shell名相同的用户 egrep"^([a-z0-9]+)&;.*1$"/etc/passwd (5)综合应用 找出ifconfig命令结果中的IP地址 ifconfig|egrep"&;inet[[:space:]]+.*[0-9]&;" 找出/etc/grub2.cfg文件中,以至少一个空白字符开头,后面又跟了非空白字符的行 egrep"^[[:space:]]+[^[:space:]]*"/etc/grub2.cfg 找出/proc/meminfo文件中,所有以大写或小写c开头的行;至少用三种方式实现 egrep"^(c|C)"/tmp/meminfo grep"^[Cc]"/tmp/meminfo grep-i"^c"/tmp/meminfo (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |