一、正则表达式 一个系统的使用,不仅仅只是软件的安装调试和维护,同时也是对与现有环境的优化和改革,我们在linux的使用过程中总是会遇到很多对于参数的描述,有时我们需要的是参数本身所给出的答案,有时我们仅仅需要的只是参数的最终状态结果。 是一些特殊或不很特殊的字符串模式的集合。通过一些元字符,来表示一些通配的意义,这可以简单的称之为正则表达式。 正则表达式:REGular EXPression, 简写为:REGEXP 元字符: .:匹配任意单个字符 匹配字符次数(工作在贪婪模式下,尽可能的去匹配): *:匹配其前面的字符任意次 a, b, ab, aab, acb, adb, amnb a*b .*:匹配任意长度的任意字符 []:匹配指定范围内的任意单个字符 [^]:匹配指定范围外的任意单个字符 [:digit:], [:lower:], [:upper:], [:punct:], [:space:], [:alpha:], [:alnum:] \?:匹配其前面的字符1次或0次 \{m,n\}:匹配其前面的字符至少m次,至多n次 \{1,\} 至少一次 \{0,3\} 至多三次 位置锚定: ^: 锚定行首,此字符后面的任意内容必须出现在行首 $: 锚定行尾,此字符后面的任意内容必须出现在行尾 ^$: 空白行 \<或\b:锚定词首,其后面的任意字符必须作为单词首部出现 \>或\b: 锚定词尾,其前面的任意字符必须作为单词尾部出现 \<root\>: 精确匹配root 分组: \(\) \(ab\)* ab可以出现0次1次任意次 后向引用 \1: 第一个左括号以及与之对应的右括号所包括的所有内容 \2: 第二个左括号以及与之对应的右括号所包括的所有内容 \3: 第三个左括号以及与之对应的右括号所包括的所有内容 扩展的正则表达式: 字符匹配: .:匹配任意单个字符 []:匹配指定范围内的任意单个字符 [^]:匹配指定范围外的任意单个字符 次数匹配: *: ?:匹配其前面的字符0次或一次 +:匹配其前面的字符至少一次 {m,n}:匹配至少m次至多n次 位置锚定: ^: 锚定行首,此字符后面的任意内容必须出现在行首 $: 锚定行尾,此字符后面的任意内容必须出现在行尾 ^$: 空白行 \<或\b:锚定词首,其后面的任意字符必须作为单词首部出现 \>或\b: 锚定词尾,其前面的任意字符必须作为单词尾部出现 \<root\>: 精确匹配root 分组: (): 分组 \1, \2, \3, ... 或者 |:or (a|abc a或者abc) 二、grep、egrep、fgrep grep:根据模式,搜索文本,并将符合模式的文本行显示出来。 Pattern: 文本字符和正则表达式的元字符组合而成匹配条件 grep: 使用基本正则表达式定义的模式来过滤文本的命令: -i 忽略大小写 --color 将匹配的字符加颜色显示 -v 只显示没有被匹配到的行 -o 只显示被模式匹配到的字符串 -E 支持扩展正则表达式 -A n : 被匹配到之后同时还显示后面的n行 -B n :被匹配到之后同时还显示前面的n行 -C n :被匹配到之后同时还显示前面后面的n行 grep -E=egrep fgreo:快速搜索,不支持正则表达式 例如:(#为[iyunv@localhost`]#) 1、搜索特定的字符 # grep ‘root’ /var/log/secure 将/var/log/secure这个文件中有root的那一行显示出来 2、反向选择 #grep –v ‘root’ /etc/passwd 3、锚定行首 #grep ‘^root’ /etc.passwd 显示出以root开头的行 4、 限定连续重复字段范围 #grep ‘‘o\(2\)’’ /etc/passwd 找到两个o的字符串 5、 显示/etc/inittan中以#开头,并且后面跟一个或多个空白字符,而后又跟了非空白字符的行 grep ‘^#[[:space:]]\{1,\}[^[:space:]]’ /etc/inittab 6、 匹配默认shell为/sbin/nologin用户列表 grep ‘nologin$’ /etc/passwd | cut –d: -f1
|