grep: Global search REgular expression and Print out the line 文本搜索工具:根据用户指定的“模式(pattern)”对目标文本进行过滤,显示被模式匹配到的行。 用法:grep [OPTION]... 'PATTERN' FILE... grep--color 自动执行着色 正则表达式:是由一类字符书写的模式,其中有些字符不表示字符的字面意义,而是表示控制或通配的功能; 两种类型的元字符
基本正则表达式: 字符匹配:
匹配次数:用于对其前面紧邻的字符所能够出现的次数作出限定
位置锚定:
分组:\(\) 后向引用:模式中,如果使用\(\)实现了分组,在某行文本的检查中,如果\(\)的模式匹配到了某内容,此内容后面的模式中可以被引用 \1, \2, \3 模式自左而右,引用第#个左括号以及与其匹配右括号之间的模式匹配到的内容 grep选项:
举例练习: 1、显示/proc/meminfo文件中以大写或小写S开头的行; 2、显示/etc/passwd文件中其默认shell为非/sbin/nologin的用户; 注:匹配单词取反时,必须使用-v选项。 \<\>只锚定数字和字母 3、显示/etc/passwd文件中其默认shell为/bin/bash的用户;进一步:仅显示上述结果中其ID号最大的用户; 而后显示最大的用户 4、找出/etc/passwd文件中的一位数或两位数; 注:‘|’或者符仅用于egrep的模式中,在grep模式中则使用‘\|’转译该符号 5、显示/boot/grub/grub.conf中以至少一个空白字符开头的行; 6、显示/etc/rc.d/rc.sysinit文件中,以#开头,后面跟至少一个空白字符,而后又有至少一个非空白字符的行; 7、找出netstat -tan命令执行结果中以'LISTEN'(后可有空白字符)结尾的行; Egrep 扩展的正则表达式 用法: # grep -E 'pattern' file... # egrep 'pattern' file... 注:“#”在命令行使用的命令格式 扩展正则表达式的元字符: 字符匹配:
匹配次数限定:
锚定:
分组:
或者:
举例 练习1:显示当前系统上root、centos或user1用户的默认shell及用户名; 练习2:找出/etc/rc.d/init.d/functions文件中某单词后面跟一对小括号"()"的行; 练习3:使用echo输出一个路径,而使用egrep取出其基名; 注意:此题查找的路径中带符号,固使用命令时要思考清楚自己想搜索的路径结果 fgrep fast grep 基于快速搜索 用法fgrep [option] 'string' file... 注:该命令不支持正则表达式,搜索时仅搜索字面字符,基于快速搜索 |
|